Accessでクエリを作成し、レポートを表示させたい。
現在SQLで
SQL
1TRANSFORM Sum([T_実績.数量]) AS 数量の合計 2SELECT T_実績.売先_CD, T_得意先M.得意先名称, T_実績.仕入先_CD, T_仕入先M.仕入先名称, T_実績.品目_CD, T_品目M.品名, T_実績.規格 3FROM ((T_実績 INNER JOIN T_得意先M ON T_得意先M.得意先コード = T_実績.売先_CD) INNER JOIN T_仕入先M ON T_仕入先M.仕入先コード = T_実績.仕入先_CD) INNER JOIN T_品目M ON T_品目M.[コード] = T_実績.品目_CD 4WHERE 売立_年 In (2020,2021) AND 売立_月=6 5GROUP BY T_実績.売先_CD, T_得意先M.得意先名称, T_実績.仕入先_CD, T_仕入先M.仕入先名称, T_実績.品目_CD, T_品目M.品名, T_実績.規格 6PIVOT IIf(T_実績.売立_年=2021,"当年","昨年") & DateDiff("ww",DateSerial(T_実績.売立_年,T_実績.売立_月,2),[売立日])+1 & "週" in(当年1週,当年2週,当年3週,当年4週,当年5週,当年6週,昨年1週,昨年2週,昨年3週,昨年4週,昨年5週,昨年6週);
クエリを作成しています。
上記のコードは、前回質問し教えて貰ったコードとなります。
それまでは、VBAで無理やり回して毎回新規テーブルで作成していました。
最終結果をエクセルに出力して、手修正で完成品を作っています。
今回レポートを使用して、同じ結果になる事が最終の目的です。
上記の画像を横に並べた状態をレポートで表示させたいです。
セル色の黄色部分は上記のSQLに無い項目です。
セル色の青色は、当年1週・・・昨年1週・・・の名が当年1週(数量)・・・昨年1週(数量)・・・と変更しています。
当年1週(金額)の計算方法は、当年1週(数量)にT_実績のフィールドに売り_単価としてありますので数量に掛けて計算したいです。
またレポートは画像のように、連続して同じCDや名称時は表示させない用にしたいです。
売先が変わる毎に、最終行に合計を表示させたいです。
2021/7/19追記
まず、当年の数量と金額の表示をさせようとしました。
数量のSQLを
TRANSFORM Sum([T_実績.数量]) AS 数量の合計 SELECT T_実績.売先_CD, T_得意先M.得意先名称, T_実績.仕入先_CD, T_仕入先M.仕入先名称, T_実績.品目_CD, T_品目M.品名, T_実績.規格, [売先_CD] & [仕入先_CD] & [品目_CD] & [規格] AS 判定コード FROM ((T_実績 INNER JOIN T_得意先M ON T_実績.売先_CD = T_得意先M.得意先コード) INNER JOIN T_仕入先M ON T_実績.仕入先_CD = T_仕入先M.仕入先コード) INNER JOIN T_品目M ON T_実績.品目_CD = T_品目M.[コード] WHERE (((T_実績.売立_年) In (2020,2021)) AND ((T_実績.売立_月)=6)) GROUP BY T_実績.売先_CD, T_得意先M.得意先名称, T_実績.仕入先_CD, T_仕入先M.仕入先名称, T_実績.品目_CD, T_品目M.品名, T_実績.規格, [売先_CD] & [仕入先_CD] & [品目_CD] & [規格] PIVOT IIf(T_実績.売立_年=2021,"当年","昨年") & DateDiff("ww",DateSerial(T_実績.売立_年,T_実績.売立_月,1),[売立日])+1 & "週(数量)" In ("当年1週(数量)","当年2週(数量)","当年3週(数量)","当年4週(数量)","当年5週(数量)","当年6週(数量)","昨年1週(数量)","昨年2週(数量)","昨年3週(数量)","昨年4週(数量)","昨年5週(数量)","昨年6週(数量)");
金額のSQLを
TRANSFORM Sum([T_実績.数量]*[T_実績.売り_単価]) AS 金額の合計 SELECT T_実績.売先_CD, T_得意先M.得意先名称, T_実績.仕入先_CD, T_仕入先M.仕入先名称, T_実績.品目_CD, T_品目M.品名, T_実績.規格, [売先_CD] & [仕入先_CD] & [品目_CD] & [規格] AS 判定コード FROM ((T_実績 INNER JOIN T_得意先M ON T_実績.売先_CD = T_得意先M.得意先コード) INNER JOIN T_仕入先M ON T_実績.仕入先_CD = T_仕入先M.仕入先コード) INNER JOIN T_品目M ON T_実績.品目_CD = T_品目M.[コード] WHERE (((T_実績.売立_年) In (2020,2021)) AND ((T_実績.売立_月)=6)) GROUP BY T_実績.売先_CD, T_得意先M.得意先名称, T_実績.仕入先_CD, T_仕入先M.仕入先名称, T_実績.品目_CD, T_品目M.品名, T_実績.規格, [売先_CD] & [仕入先_CD] & [品目_CD] & [規格] PIVOT IIf(T_実績.売立_年=2021,"当年","昨年") & DateDiff("ww",DateSerial(T_実績.売立_年,T_実績.売立_月,1),[売立日])+1 & "週(金額)" In ("当年1週(金額)","当年2週(金額)","当年3週(金額)","当年4週(金額)","当年5週(金額)","当年6週(金額)","昨年1週(金額)","昨年2週(金額)","昨年3週(金額)","昨年4週(金額)","昨年5週(金額)","昨年6週(金額)");
としました。
次に別々に作成したSQLを一つにするために
TRANSFORM (Sum([T_実績.数量]) AS 数量の合計,Sum([T_実績.数量]*[T_実績.売り_単価]) AS 金額の合計)
や
TRANSFORM IN(Sum([T_実績.数量]) AS 数量の合計,Sum([T_実績.数量]*[T_実績.売り_単価]) AS 金額の合計)
を試しましたが、エラーとなりました。
また、PIVOTは
PIVOT IIf(T_実績.売立_年=2021,"当年","昨年") & DateDiff("ww",DateSerial(T_実績.売立_年,T_実績.売立_月,1),[売立日])+1 & "週" In (当年1週(数量),当年2週(数量),当年3週(数量),当年4週(数量),当年5週(数量),当年6週(数量),昨年1週(数量),昨年2週(数量),昨年3週(数量),昨年4週(数量),昨年5週(数量),昨年6週(数量),当年1週(金額),当年2週(金額),当年3週(金額),当年4週(金額),当年5週(金額),当年6週(金額),昨年1週(金額),昨年2週(金額),昨年3週(金額),昨年4週(金額),昨年5週(金額),昨年6週(金額));
としています。
まず、数量と金額の表示をさせれる用になった後に合計や目標の値を表示させれる用になりたいです。
とりあえず、今は数量と金額のクエリをさらに判定コードを作成して二個を1個にまとめています。
回答1件
あなたの回答
tips
プレビュー