• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQL結合条件)

SQL結合条件の使い方と結合抽出の方法

このQ&Aのポイント
  • SQL結合条件を使ってテーブルを結合し、結合抽出(テーブルの表示)を行う方法について解説します。
  • 結合抽出の方法はこのままでWHERE句に条件を追加し、計算も行いたい場合の方法についても解説します。
  • 具体的なSQLの例を使用して説明し、初心者でも理解しやすくするために工夫しました。

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

集計(GROUP BY)がかかる部分を誤ってました。 以下でテストしてみてください。 SELECT MS.商品コード, MS.倉庫コード, MS.現在庫数, ISNULL(UTP.数量合計,0) T売上明細ファイル1OR4, MS.現在庫数 + ISNULL(UTP.数量合計)  帳簿在庫 FROM T商品別倉庫在庫 MS LEFT JOIN ( select 商品コード, 倉庫コード,SUM(数量) 数量合計 from T売上明細ファイル WHERE 売上区分コード = 1 OR 売上区分コード = 4 GROUP BY 商品コード, 倉庫コード ) UTP ON MS.商品コード = UTP.商品コード AND MS.倉庫コード = UTP.倉庫コード order by MS.商品コード, MS.倉庫コード ;

ukatu
質問者

お礼

うーん。なるほど難しいですね。 でもよくわかりました。 ありがとうございました。 また、機会があれば教えてください。

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

Oracleだったら以下のような感じ(未テスト) でもSQLServerなんですよね? T売上明細ファイルを集計した結果をテーブルに見立ててトライしてみてください。 Fromのテーブルに集計結果を持ってくるところがミソ。 SELECT MS.商品コード, MS.倉庫コード, MS.現在庫数 + ISNULL(UTP.10R4,0)  帳簿在庫 from T商品別倉庫在庫 MS, ( select 倉庫コード, 商品コード, SUM(UTP.数量) 1OR4 from T売上明細ファイル where 売上区分コード = 1 OR 売上区分コード = 4 ) UTP where MS.倉庫コード = UTP.倉庫コード(+) AND MS.商品コード = UTP.商品コード(+) GROUP BY MS.商品コード, MS.倉庫コード, MS.帳簿在庫 ;

関連するQ&A