- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:access 1対1と1対多のテーブルをクエリで集計したい…)
access 1対1と1対多のテーブルをクエリで集計したい
このQ&Aのポイント
- 売り上げを計算するクエリを作成中の受注管理データベースで、1対1と1対多のテーブルを使って集計したいです。
- 特に、受注マスタテーブルと受注明細マスタテーブル、経費・返品金額テーブルの関係を利用して売上を計算したいです。
- 現在、販売単価×購入個数-経費+返品金額という計算式を使用して、月ごとに売上を集計しようとしていますが、うまくいきません。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
受注明細が注文番号だけでは1件に絞られず複数件抽出されるので これと結合している時点で受注、経費のテーブルからは 同じレコードを何回も使って結合を行ってしまいます。 1:1:1になるように、先に受注明細だけ集計を取っておいて サブクエリとするのが適切かと。 SELECT Format([注文者マスタ].[注文日],"yyyy/mm") AS 月, Sum(A.[購入金額] - [経費・返品金額テーブル].[経費] + [経費・返品金額テーブル].[返品金額]) AS 売上 FROM (注文者マスタ LEFT JOIN 経費・返品金額テーブル ON 注文者マスタ.注文番号 = 経費・返品金額テーブル.注文番号) LEFT JOIN (SELECT 注文番号, Sum(販売単価 * 購入数量) AS 購入金額 FROM 受注明細マスタ GROUP BY 注文番号) A ON 注文者マスタ.注文番号 = A.注文番号 GROUP BY Format(注文者マスタ.注文日,"yyyy/mm"); ↑こんな感じでお望みの結果が得られませんでしょうか。 (SELECT 注文番号, Sum(販売単価 * 購入数量) AS 購入金額 FROM 受注明細マスタ GROUP BY 注文番号) A SQLが煩雑になるのを避けたいならば、この部分だけをあらかじめ一つのクエリとして作っておいて そのクエリと結合する形でもできますよ。
お礼
できました!ありがとうございます! すばやいご回答ありがとうございます! サブクエリやクエリを分けて考えるということはまったく知りませんでした。 いくら悩んでも解決しないわけです… いつも何か問題にぶつかるたびに親切なご回答を頂いて本当に助かります。 ありがとうございました。