• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQLが分かりません)

SQL初心者のための売上げ一覧表示の方法

このQ&Aのポイント
  • SQL初心者の方でも売上げ一覧を表示する方法をご紹介します。
  • 売上げヘッダと売上げ明細のテーブルを結合し、値引きの有無を表示させる方法を解説します。
  • ワークテーブルを使用して売上げ一覧を作成し、値引きの有無を分かりやすく表示する方法をご説明します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

よく考えると、別に副問い合わせ ( SELECT ~ FROM (SELECT ~ ) の形 ) にする必要ありませんでした。 という訳で、↓こんな感じ。 SELECT 売上ヘッダー.伝票番号, 売上ヘッダー.売上日, 売上ヘッダー.売上げ金額, IIf(Sum(売上げ明細.値引金額)=0,"なし","あり") AS 値引有無, IIf(Sum(IIf([コメント] Is Null,1,0))<>0,"×","○") AS コメント有無 FROM 売上ヘッダー INNER JOIN 売上げ明細 ON 売上ヘッダー.伝票番号 = 売上げ明細.伝票番号 GROUP BY 売上ヘッダー.伝票番号, 売上ヘッダー.売上日, 売上ヘッダー.売上げ金額 ;

youyou1997
質問者

お礼

ありがとうございます。 完璧です!

その他の回答 (2)

回答No.2

すみません、失敗しました。(^^; ↓のような感じでうまくいくと思います。 SELECT 伝票番号, 売上日, 売上げ金額, IIf([値引金額合計]=0,"なし","あり") AS 値引有無 FROM ( SELECT 売上ヘッダー.伝票番号, 売上ヘッダー.売上日, 売上ヘッダー.売上げ金額, Sum(売上げ明細.値引金額) AS 値引金額合計 FROM 売上ヘッダー INNER JOIN 売上げ明細 ON 売上ヘッダー.伝票番号 = 売上げ明細.伝票番号 GROUP BY 売上ヘッダー.伝票番号, 売上ヘッダー.売上日, 売上ヘッダー.売上げ金額 );

youyou1997
質問者

補足

早速の回答ありがとうございます。 お蔭様で期待した結果になりました。 あと、もう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

回答No.1

(1) 売上ヘッダーと売上明細を伝票番号で結合 (2) 売上ヘッダーの項目で集計 (3) 売上明細の値引金額は合計にする(非表示でもOK) (4) 値引有無: IIf([値引金額]=0,"なし","あり") という項目を作る。 で、↓こんな SQL になりました。 SELECT 売上ヘッダー.伝票番号, 売上ヘッダー.売上日, 売上ヘッダー.売上げ金額, IIf([値引金額]=0,"なし","あり") AS 値引有無 FROM 売上ヘッダー INNER JOIN 売上げ明細 ON 売上ヘッダー.伝票番号 = 売上げ明細.伝票番号 GROUP BY 売上ヘッダー.伝票番号, 売上ヘッダー.売上日, 売上ヘッダー.売上げ金額, IIf([値引金額]=0,"なし","あり");

youyou1997
質問者

補足

早速の回答ありがとうございます。 試してみましたが、期待した結果と少し違いました。 説明不足でしたが、売上げ明細には複数の商品が存在し(枝番が変わります)、商品ごとに値引きが変わります。 教えていただいた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商品でも値引きがあれば「あり」、無ければ「なし」となるようには、どのようにすればよいでしょうか。