- ベストアンサー
SQL結合条件の使い方と結合抽出の方法
- SQL結合条件を使ってテーブルを結合し、結合抽出(テーブルの表示)を行う方法について解説します。
- 結合抽出の方法はこのままでWHERE句に条件を追加し、計算も行いたい場合の方法についても解説します。
- 具体的なSQLの例を使用して説明し、初心者でも理解しやすくするために工夫しました。
- みんなの回答 (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.倉庫コード ;
その他の回答 (1)
- bin-chan
- ベストアンサー率33% (1403/4213)
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.帳簿在庫 ;
お礼
うーん。なるほど難しいですね。 でもよくわかりました。 ありがとうございました。 また、機会があれば教えてください。