
受注管理のデータベースを作っています。
売り上げを計算するクエリを作ったのですがどうもうまくいかないので質問します。
集計したいテーブルですが
受注マスタテーブル
注文番号(主キー テキスト型)
注文日(日付型)
氏名
:
:
受注明細マスタテーブル
注文番号 (重複あり)受注マスタの注文番号と1対多のリレーションシップ
商品名
品番
販売単価
購入個数
経費・返品金額テーブル
注文番号(主キー)受注マスタの注文番号と1対1のリレーションシップ
経費
返品金額
これを、販売単価×購入個数-経費+返品金額というようにして1ヵ月ごとに集計しようとして、下のようなクエリを作ったのですが経費が何回も計算されてうまくいきませんでした…
よろしくお願いします。
SELECT Format(注文者マスタ!注文日,"yyyy/mm") AS 月, Sum([受注明細マスタ]![販売単価]*[受注明細マスタ]![購入数量]-[経費・返品金額テーブル]![経費]+[経費・返品金額テーブル]![返品金額]) AS 売上
FROM (注文者マスタ RIGHT JOIN 経費・返品金額テーブル ON 注文者マスタ.注文番号 = 経費・返品金額テーブル.注文番号) LEFT JOIN 受注明細マスタ ON 注文者マスタ.注文番号 = 受注明細マスタ.注文番号
GROUP BY Format(注文者マスタ!注文日,"yyyy/mm");
No.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が煩雑になるのを避けたいならば、この部分だけをあらかじめ一つのクエリとして作っておいて
そのクエリと結合する形でもできますよ。
できました!ありがとうございます!
すばやいご回答ありがとうございます!
サブクエリやクエリを分けて考えるということはまったく知りませんでした。
いくら悩んでも解決しないわけです…
いつも何か問題にぶつかるたびに親切なご回答を頂いて本当に助かります。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「直需」の意味を教えてください
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
【Access】フォームで自動計算...
-
【続続】Access2002で連番のつ...
-
再計算って出来ますか?
-
Countと受付状態の表示に...
-
下記の事を行うSQLがわかりませ...
-
Oracle 2つのDate型の値の差を...
-
Access2000 更新のタイミング?
-
ACCESSでの改行コード
-
accsessで顧客コードで氏名を呼...
-
datファイルからaccessにインポ...
-
Access クロス集計クエリについて
-
カウントが出来ません
-
accessのレポートで元になるテ...
-
Accessのフィールド数が255しか...
-
Access テキスト型に対する指定...
-
Accessでテーブル名やクエリ名...
-
Accessレコードの追加や変更が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「直需」の意味を教えてください
-
作番ってどういう意味でしょうか?
-
アクセスのクエリで、前回に入...
-
「失注」の意味を教えてくださ...
-
受注受付期間とはなんですか?...
-
Access:サブフォームのレコー...
-
ACCESS 選択した値を別...
-
データシート形式のサブフォー...
-
ACCESSで、DMax関数の条件の書き方
-
アクセスで営業日を計算させる...
-
ACCESS2000の帳票フォーム詳細...
-
マクロ転記で指定した列の最終...
-
Accessの受注発注について
-
エクセルのフィルタオプション...
-
フォーム入力、更新後処理で指...
-
VBA でvlookup エラーなどは削...
-
フォームにレコード数を表示したい
-
ACCESS 受注数の集計について
-
エクセルで困ってます
-
excelの積上げグラフについて
おすすめ情報