SQL Server複数テーブルの連結
在庫管理を行う上で、3つのテーブルを結合したいと考えておりますが、うまく結合できません。
【テーブル抜粋】
・販売
販売日
部門CD
店舗CD
商品CD
販売数
・仕入
仕入日
部門CD
店舗CD
商品CD
仕入数
・棚卸
棚卸日
部門CD
店舗CD
商品CD
実在庫
各テーブルから、日付で絞りこんで抽出は出来ていますが、上記を結合させる方法がわかりません。
※各テーブルの商品数がバラバラです。
例えば、棚卸にはあるが、仕入も販売もない商品。
販売にはあるが、在庫も仕入もない商品N。
試した方法、在庫を基本に販売をLEFT OUTER JOINで結合し、仕入をLEFT OUTER JOINで結合しGROUP BYで集計
SELECT
部門CD,店舗CD,商品CD,ISNULL(実在庫,0) AS Z,ISNULL(販売数,0) AS B,ISNULL(仕入数,0) AS S
FROM(
SELECT 部門CD,店舗CD,商品CD,SUM(実在庫) FROM 棚卸
WHERE 棚卸日 BETWEEN (開始日) AND (終了日)
ORDER BY 部門CD,店舗CD,商品CD
)AS ZAI
LEFT OUTER JOIN(
SELECT 部門CD,店舗CD,商品CD,SUM(販売数) FROM 販売
WHERE 販売日 BETWEEN (開始日) AND (終了日)
ORDER BY 部門CD,店舗CD,商品CD
) AS BAI
ON ZAI.商品CD=BAI.商品CD
LEFT OUTER JOIN(
SELECT 部門CD,店舗CD,商品CD,SUM(仕入) FROM 仕入
WHERE 仕入日 BETWEEN (開始日) AND (終了日)
ORDER BY 部門CD,店舗CD,商品CD
) AS SII
ON ZAI.商品CD=SII.商品CD
上記の結果、結合はしたのですが、店舗間の商品数がバラバラとなりました。
例えば、aという店舗の販売数に、b販売数がはいっていたらり?
※結合する前の、クエリは正常に抽出しておりますので、結合方法が悪いと考えております。
もしかすると、テーブルの項目をそろえて、UNION ALLでつなげばと思ったのですが、コーディング方法がわからす・・・
結合方法をアドバイス頂けたら幸いです。
お礼
ありがとうございます!