|
いつもお世話になっています。
毎月の給食費の支出を管理するデータベースを作っています。
毎月のデータを下のような構成のテーブル【T_支給明細_年間給食費18】に積み上げていって
名前 学校コード 月分 給食費 請求日
A 10 1 5000 2007/01/31
A 10 12 4800 2006/12/31
・
・
集計用にクロス集計クエリを作って次のような集計データを得ています。
学校コード 生徒名 ・・ 12_月分 12_月分請求日 1_月分 1_月分請求日 ・・
10 A ・・ 4800 2006/12/31 5000 2007/01/31
・集計クエリの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_月分請求日");
今までとくに支障がなかったのですが、ときどき誤請求があって、訂正分を【T_支給明細_年間給食費18】に追加した場合
名前 学校コード 月分 給食費 請求日
A 10 1 5000 2007/01/31
A 10 12 4800 2006/12/31
A 10 1 -500 2007/02/16 ←追加分
上記の集計方法だと
学校コード 生徒名 ・・ 12_月分 12_月分請求日 1_月分 1_月分請求日 ・・
10 A ・・ 4800 2006/12/31 5000 2007/01/31
としか表示できず、-500円のデータが集計できません。
現在の自分の知識では、追加の月分を 1-1など枝番でテーブルに追加し、
学校コード 生徒名 ・・ 12_月分 12_月分請求日 1_月分 1_月分請求日 1-1_月分 1-1月分請求日 として表示させるなどの方法しか思いつかないのですが、そうすると1月分を抽出したいときや、月ごとの並べ替えに都合が悪くなりそうで、
できれば、
学校コード 生徒名 ・・ 12_月分 12_月分請求日 1_月分 1_月分請求日 ・・
10 A ・・ 4800 2006/12/31 5000 2007/01/31
10 A -500 2007/02/16
と表示するような方法があればと思うのですが・・。
もしご存知でしたらご教示をお願いします。
また、こういうケースを想定した場合のテーブルの構成方法や集計方法等でいい方法があればご教示いただけると大変助かります。
長々とすみません。
よろしくお願いいたします。
(Win 2000 Access2000)
|
|