Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4161 / 9994 ←次へ | 前へ→

【9080】Re:集計方法について
回答  小僧  - 07/2/2(金) 10:40 -

引用なし
パスワード
   ▼あおぎん さん:
おはようございます。

まず仕様の問題なのですが、

>名前 学校コード 月分 給食費 請求日
>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_月分請求日");


こんな感じになるのでしょうかね。
220 hits

【9078】集計方法について あおぎん 07/2/1(木) 15:42 質問
【9080】Re:集計方法について 小僧 07/2/2(金) 10:40 回答
【9082】Re:集計方法について あおぎん 07/2/2(金) 16:12 お礼

4161 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078208
(SS)C-BOARD v3.8 is Free