|
いつもお世話になっています。
今回は累計計算をさせようとして
発生したことについてご質問です。
以下に例を挙げて説明します。
●テーブル1
クラスID:オートナンバー、主キー
クラス:テキスト
●テーブル2
ID:オートナンバー、主キー
年月日:日付型
クラス:ルックアップ
得点:数値型
※クエリ1
SQL
SELECT テーブル2.ID, テーブル2.クラス, テーブル2.得点, テーブル2.年月
FROM テーブル2 INNER JOIN テーブル1 ON テーブル2.クラス = テーブル1.クラスID;
※クエリ2
SQL
SELECT T.ID, T.得点, T.年月日, T.クラス, (select sum(S.得点) from クエリ as S where val(S.年月) <= val(T.年月日) and S.ID <= T.ID) AS 累計
FROM クエリ AS T
ORDER BY T.ID;
※クエリ3
SQL
SELECT クエリ2.年月日, クエリ2.ID, クエリ2.クラス, クエリ2.得点, クエリ2.累計, IIf(Format(クエリ2.年月日,"mmdd")="0229",Null,DateAdd("yyyy",-1,クエリ2.年月日)) AS 前年度年月日, P.得点 AS 前年得点, P.累計 AS 前年累計, P.クラス AS 前年クラス
FROM クエリ2 LEFT JOIN [SELECT IIf(Format(クエリ2.年月日,"mmdd")="0229",Null,DateAdd("yyyy",1,クエリ6新.年月日)) AS 来年年月日, クエリ2.クラス, クエリ2.得点, クエリ2.累計
FROM クエリ2]. AS P ON (クエリ2.クラス = P.クラス) AND (クエリ2.年月日 = P.来年年月)
ORDER BY クエリ2.年月日;
テーブル2をクエリ1に置き換えてからクエリ2で累計計算をして
クエリ3で前年度表示としているのですがデータ型が違うと表示されて
しまいます。
クエリ1に置き換えずにクエリ2の処理を直接テーブルから行えば
実行されるのですがクエリ1で別に計算をさせたいので必要なのです。
データが違うとなってしまうのは何故なんでしょうか?
また、これを上手く実行させるにはどうすれば良いのでしょうか?
同じ動作ができれば異なる方法でも構いません。
宜しくご教授をお願いします。
|
|