|
▼あおぎん さん:
おはようございます。
まず仕様の問題なのですが、
>名前 学校コード 月分 給食費 請求日
>A 10 1 5000 2007/01/31
>A 10 12 4800 2006/12/31
>A 10 1 -500 2007/02/16 ←追加分
クロス集計をする際に1月分の給食費を4500円にされたいのは解るのですが、
請求日については 1/31、2/16 どちらを表示させたいのでしょうか。
考え方としては
>・集計クエリのSQL
>TRANSFORM Max(P.給食費計) AS 金額の最大
>SELECT P.学校コード, P.生徒名
>FROM [
>SELECT T_支給明細_年間給食費18.生徒名, T_支給明細_年間給食費18.学校コード,T_支給明細_年間給食費18.月分 & "_月分" AS 集計,
>T_支給明細_年間給食費18.給食費計, T_支給明細_年間給食費18.給食費請求日 AS 抽出
>FROM T_支給明細_年間給食費18
>
>UNION ALL SELECT T_支給明細_年間給食費18.生徒名, T_支給明細_年間給食費18.学校コード,T_支給明細_年間給食費18.月分 & "_月分請求日" AS 集計,
>T_支給明細_年間給食費18.給食費請求日, T_支給明細_年間給食費18.給食費請求日 AS 抽出
>FROM T_支給明細_年間給食費18
>
>WHERE T_支給明細_年間給食費18.給食費請求日
>]. AS P
>WHERE (((P.抽出)>=[Forms]![F_給食費事務メニュー]![抽出給食費請求日])) OR ((([Forms]![F_給食費事務メニュー]![抽出給食費請求日]) Is Null))
>GROUP BY P.学校コード, P.生徒名
>ORDER BY P.学校コード
>PIVOT P.集計 In ("4_月分","4_月分請求日","5_月分","5_月分請求日","6_月分","6_月分請求日","7_月分","7_月分請求日","9_月分","9_月分請求日","10_月分","10_月分請求日","11_月分","11_月分請求日","12_月分","12_月分請求日","1_月分","1_月分請求日","2_月分","2_月分請求日","3_月分","3_月分請求日");
UNION以前のSQLを抜き出して見ると
SELECT T_支給明細_年間給食費18.生徒名,
T_支給明細_年間給食費18.学校コード,
T_支給明細_年間給食費18.月分 & "_月分" AS 集計,
T_支給明細_年間給食費18.給食費計,
T_支給明細_年間給食費18.給食費請求日 AS 抽出
FROM T_支給明細_年間給食費18
↓
名前 学校コード 月分 給食費 請求日
A 10 1 5000 2007/01/31
A 10 12 4800 2006/12/31
A 10 1 -500 2007/02/16 ←追加分
これを集計してあげれば良いのですから(2/16の日付を採るとすると)
SELECT T_支給明細_年間給食費18.生徒名,
T_支給明細_年間給食費18.学校コード,
T_支給明細_年間給食費18.月分 & "_月分" AS 集計,
Sum(T_支給明細_年間給食費18.給食費計) AS 給食費計,
Max(T_支給明細_年間給食費18.給食費請求日) AS 抽出
FROM T_支給明細_年間給食費18
GROUP BY T_支給明細_年間給食費18.生徒名,
T_支給明細_年間給食費18.学校コード,
T_支給明細_年間給食費18.月分 & "_月分";
↓
名前 学校コード 月分 給食費 請求日
A 10 1 4500 2007/02/16
A 10 12 4800 2006/12/31
こいつをクロス集計のクエリに使えばよいので
TRANSFORM Max(P.給食費計) AS 金額の最大
SELECT P.学校コード, P.生徒名
FROM [
SELECT T_支給明細_年間給食費18.生徒名,
T_支給明細_年間給食費18.学校コード,
T_支給明細_年間給食費18.月分 & "_月分" AS 集計,
Sum(T_支給明細_年間給食費18.給食費計) AS 給食費計,
Max(T_支給明細_年間給食費18.給食費請求日) AS 抽出
FROM T_支給明細_年間給食費18
GROUP BY T_支給明細_年間給食費18.生徒名,
T_支給明細_年間給食費18.学校コード,
T_支給明細_年間給食費18.月分 & "_月分"
UNION ALL
SELECT T_支給明細_年間給食費18.生徒名,
T_支給明細_年間給食費18.学校コード,
T_支給明細_年間給食費18.月分 & "_月分請求日" AS 集計,
T_支給明細_年間給食費18.給食費請求日,
T_支給明細_年間給食費18.給食費請求日 AS 抽出
FROM T_支給明細_年間給食費18
WHERE T_支給明細_年間給食費18.給食費請求日
]. AS P
WHERE (((P.抽出)>=[Forms]![F_給食費事務メニュー]![抽出給食費請求日])) OR
((([Forms]![F_給食費事務メニュー]![抽出給食費請求日]) Is Null))
GROUP BY P.学校コード, P.生徒名
ORDER BY P.学校コード
PIVOT P.集計
In ("4_月分","4_月分請求日","5_月分","5_月分請求日",
"6_月分","6_月分請求日","7_月分","7_月分請求日",
"9_月分","9_月分請求日","10_月分","10_月分請求日",
"11_月分","11_月分請求日","12_月分","12_月分請求日",
"1_月分","1_月分請求日","2_月分","2_月分請求日",
"3_月分","3_月分請求日");
こんな感じになるのでしょうかね。
|
|