- ベストアンサー
SQL初心者のための売上げ一覧表示の方法
- SQL初心者の方でも売上げ一覧を表示する方法をご紹介します。
- 売上げヘッダと売上げ明細のテーブルを結合し、値引きの有無を表示させる方法を解説します。
- ワークテーブルを使用して売上げ一覧を作成し、値引きの有無を分かりやすく表示する方法をご説明します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
よく考えると、別に副問い合わせ ( SELECT ~ FROM (SELECT ~ ) の形 ) にする必要ありませんでした。 という訳で、↓こんな感じ。 SELECT 売上ヘッダー.伝票番号, 売上ヘッダー.売上日, 売上ヘッダー.売上げ金額, IIf(Sum(売上げ明細.値引金額)=0,"なし","あり") AS 値引有無, IIf(Sum(IIf([コメント] Is Null,1,0))<>0,"×","○") AS コメント有無 FROM 売上ヘッダー INNER JOIN 売上げ明細 ON 売上ヘッダー.伝票番号 = 売上げ明細.伝票番号 GROUP BY 売上ヘッダー.伝票番号, 売上ヘッダー.売上日, 売上ヘッダー.売上げ金額 ;
その他の回答 (2)
- tsukasa-12r
- ベストアンサー率65% (358/549)
すみません、失敗しました。(^^; ↓のような感じでうまくいくと思います。 SELECT 伝票番号, 売上日, 売上げ金額, IIf([値引金額合計]=0,"なし","あり") AS 値引有無 FROM ( SELECT 売上ヘッダー.伝票番号, 売上ヘッダー.売上日, 売上ヘッダー.売上げ金額, Sum(売上げ明細.値引金額) AS 値引金額合計 FROM 売上ヘッダー INNER JOIN 売上げ明細 ON 売上ヘッダー.伝票番号 = 売上げ明細.伝票番号 GROUP BY 売上ヘッダー.伝票番号, 売上ヘッダー.売上日, 売上ヘッダー.売上げ金額 );
補足
早速の回答ありがとうございます。 お蔭様で期待した結果になりました。 あと、もう1点追加で質問がありますので、お付き合い願います。 売上げ明細テーブルに、コメント(テキスト)フィールドを追加します。 画面上の値引き有無の代わりに、コメント有無に変更して、売上げごとに、 コメントが1件でも入力されていなかったら(nullだったら)X印を出したい のですが、どのようにすれば良いでしょうか。 ※1つの売上げに明細が3商品あった場合、コメントが1つでもnullならXを 出したいです。 よろしくお願いします。 ●売上げ明細 テーブル 伝票番号(キー) 枝番(キー) : 値引金額 コメント ←追加 : 伝票番号 売上日 売上げ金額 コメント有無 9999 2004/1/1 10,000 10000 2004/1/2 1,500 X 10001 2004/1/2 20,000 10002 2004/1/3 18,900 10003 2004/1/4 23,500 X
- tsukasa-12r
- ベストアンサー率65% (358/549)
(1) 売上ヘッダーと売上明細を伝票番号で結合 (2) 売上ヘッダーの項目で集計 (3) 売上明細の値引金額は合計にする(非表示でもOK) (4) 値引有無: IIf([値引金額]=0,"なし","あり") という項目を作る。 で、↓こんな SQL になりました。 SELECT 売上ヘッダー.伝票番号, 売上ヘッダー.売上日, 売上ヘッダー.売上げ金額, IIf([値引金額]=0,"なし","あり") AS 値引有無 FROM 売上ヘッダー INNER JOIN 売上げ明細 ON 売上ヘッダー.伝票番号 = 売上げ明細.伝票番号 GROUP BY 売上ヘッダー.伝票番号, 売上ヘッダー.売上日, 売上ヘッダー.売上げ金額, IIf([値引金額]=0,"なし","あり");
補足
早速の回答ありがとうございます。 試してみましたが、期待した結果と少し違いました。 説明不足でしたが、売上げ明細には複数の商品が存在し(枝番が変わります)、商品ごとに値引きが変わります。 教えていただいたSQLでは以下のようになりました。 伝票番号 売上日 売上げ金額 値引有無 1000 2004/01/01 1000 あり 1000 2004/01/01 1000 なし 1001 2004/01/02 2000 なし 1002 2004/01/03 3000 あり 1002 2004/01/03 3000 なし 同じ伝票番号が「あり」と「なし」で2行出てしまいます。 1つの伝票番号で、1商品でも値引きがあれば「あり」、無ければ「なし」となるようには、どのようにすればよいでしょうか。
お礼
ありがとうございます。 完璧です!