テーブルから、クロス集計クエリを作成した後に結合をしたい。
クロス集計クエリ1とクロス集計クエリ2を作成。
[年度,売cd,売り先名,仕入cd,仕入先名,種類,1週,2週,3週,4週]
クロス集計クエリ1とクロス集計クエリ2の違いは、年度の抽出条件が2020年と2021年。
クロス集計クエリ1とクロス集計クエリ2を、横方向に結合したい。
結合条件は、売cd,仕入cd,種類が一致した物を横方向に結合。
片方にしか存在しないものも表示する。
完成クエリのイメージは以下
[売cd,売り先名,仕入cd,仕入先名,種類,当年1週,当年2週,当年3週,当年4週.昨年1週,昨年2週,昨年3週,昨年4週]
現在は、クロス集計クエリ1とクロス集計クエリ2をVBAで読み込みループで一致する項目を探して新規テーブルを作成し書き込みで処理。
クエリやSQLで解決を行いたい。
よろしくお願いいたします。
以下追記 20210710
クエリで実績テーブルから必要情報のみを抜き出すクエリを作成しています。
その際に、月曜開始で何週目かを判定させています。
下記SQL
SELECT T_実績.売立日, T_実績.売先_CD, T_得意先M.得意先名称, T_実績.仕入先_CD, T_仕入先M.仕入先名称, T_実績.品目_CD, T_品目M.品名, T_実績.登録品目名, T_実績.数量, T_実績.売り_単価, T_実績.仕入_単価, DateDiff("ww",DateSerial(Year([売立日]),Month([売立日]),2),[売立日])+1 AS 週目, T_実績.規格
FROM T_品目M INNER JOIN (T_仕入先M INNER JOIN (T_得意先M INNER JOIN T_実績 ON T_得意先M.得意先コード = T_実績.売先_CD) ON T_仕入先M.仕入先コード = T_実績.仕入先_CD) ON T_品目M.[コード] = T_実績.品目_CD
WHERE (((T_実績.売立_年)=2020) AND ((T_実績.売立_月)=6));
条件を2020で[Q_昨年]と2021で[Q_当年]二つのクエリを作成しています。
[Q_昨年]と[Q_当年]をそれぞれクロス集計クエリで週目を計算しています。
下記SQL
TRANSFORM Sum(Q_当年.数量) AS 数量の合計
SELECT Q_当年.売先_CD, Q_当年.得意先名称, Q_当年.仕入先_CD, Q_当年.仕入先名称, Q_当年.品目_CD, Q_当年.品名, Q_当年.規格
FROM Q_当年
GROUP BY Q_当年.売先_CD, Q_当年.得意先名称, Q_当年.仕入先_CD, Q_当年.仕入先名称, Q_当年.品目_CD, Q_当年.品名, Q_当年.規格
PIVOT Q_当年.週目;
[Q_昨年_クロス]と[Q_当年_クロス]
を結合して、昨年と当年を横に並べたいです。
回答2件
あなたの回答
tips
プレビュー