###前提・実現したいこと
sqlserver 初心者です。
今回はタイトルのごとく、結合したいテーブルが行数が違うかつ、NULLの入ったテーブルを結合したいです。
結合するもの↓
グループコード,店舗997の売上売価
NULL 694.00
0001 47162.00
0003 90980.00
0004 61136.00
0005 23659.00
0006 13819.00
0007 19187.00
0008 86637.00
0009 40476.00
0010 30813.00
0011 8831.00
0013 81441.00
0014 67821.00
0015 23294.00
0016 1690.00
0017 23659.00
グループコード,店舗998の売上売価
NULL 498340.00
0003 742.00
0004 22624.00
0005 1838.00
0006 3738.00
0007 3599.00
0008 32522.00
0010 3954.00
0014 5118.00
0015 3078.00
0016 900.00
0017 4800.00
グループコード,店舗999の売上売価
NULL 7880.00
0001 221761.00
0003 311382.00
0004 224474.00
0005 91251.00
0006 39771.00
0007 28180.00
0008 280208.00
0009 8272.00
0010 79309.00
0011 35958.00
0012 10110.00
0013 234175.00
0014 170795.00
0015 7114.00
0016 45018.00
0017 103056.00
表示結果としては↓を目指しています。
グループコード,店舗997の売上売価,店舗998の売上売価,店舗999の売上売価
NULL 694.00 498340.00 7880.00
0001 47162.00 NULL 221761.00
0003 90980.00 742.00 311382.00
0004 61136.00 22624.00 224474.00
0005 23659.00 1838.00 91251.00
0006 13819.00 3738.00 39771.00
0007 19187.00 3599.00 28180.00
0008 86637.00 32522.00 280208.00
0009 40476.00 NULL 8272.00
0010 30813.00 3954.00 79309.00
0011 8831.00 NULL 35958.00
0012 NULL NULL 10110.00
0013 81441.00 NULL 234175.00
0014 67821.00 5118.00 170795.00
0015 23294.00 3078.00 7114.00
0016 1690.00 900.00 45018.00
0017 23659.00 4800.00 103056.00
###発生している問題・エラーメッセージ・該当のソースコード
そもそも行数が違うテーブルを結合できるかどうかすらわかりません。
第一にそこが知りたいです。
現状の問題としては、joinの仕方が悪いのか、結合条件がわるいのかで数値がうまく表示されません。
店舗998と999の売上売価がNULLになってしまいます。
問題対象のコード↓
select
GRP.グループコード,
SUM(s1. 売上売価) AS 店舗997の売上売価,
SUM(s2. 売上売価) AS 店舗998の売上売価,
SUM(s3. 売上売価) AS 店舗999の売上売価
from
(select SYODAY.店舗コード , SYODAY.商品コード, sum(SYODAY.売上売価) as 売上売価
from SYODAY
where 日付 = '20141126' and SYODAY.店舗コード = '997' group by SYODAY.店舗コード , SYODAY.商品コード )as s1 left join SYO on SYO.店舗コード = s1.店舗コード and SYO.商品コード = s1.商品コード
left join(select SYODAY.店舗コード , SYODAY.商品コード, sum(SYODAY.売上売価) as 売上売価
from SYODAY
where 日付 = '20141126' and SYODAY.店舗コード = '998' group by SYODAY.店舗コード , SYODAY.商品コード ) as s2 on SYO.店舗コード = s2.店舗コード and SYO.商品コード = s2.商品コード
left join(select SYODAY.店舗コード , SYODAY.商品コード,sum(SYODAY.売上売価) as 売上売価
from SYODAY
where 日付 = '20141126' and SYODAY.店舗コード = '999' group by SYODAY.店舗コード , SYODAY.商品コード ) as s3 on SYO.店舗コード = s3.店舗コード and SYO.商品コード = s3.商品コード
left join CLS on CLS.店舗コード = SYO.店舗コード
and CLS.クラスコード = SYO.クラスコード
left join BUM on BUM.店舗コード = CLS.店舗コード
and BUM.部門コード = CLS.部門コード
left join GRP on GRP.店舗コード = BUM.店舗コード
and GRP.グループコード = BUM.グループコード
group by GRP.グループコード
order by GRP.グループコード
このコードのようにサブクエリによる結合をしたいですが、うまく表示されません
↓
グループコード,店舗997の売上売価,店舗998の売上売価,店舗999の売上売価
NULL 694.00 NULL NULL
0001 47162.00 NULL NULL
0003 90980.00 NULL NULL
0004 61136.00 NULL NULL
0005 23659.00 NULL NULL
0006 13819.00 NULL NULL
0007 19187.00 NULL NULL
0008 86637.00 NULL NULL
0009 40476.00 NULL NULL
0010 30813.00 NULL NULL
0011 8831.00 NULL NULL
0012 NULL NULL NULL
0013 81441.00 NULL NULL
0014 67821.00 NULL NULL
0015 23294.00 NULL NULL
0016 1690.00 NULL NULL
0017 23659.00 NULL NULL
この結果の店舗998,999のNULLの部分を正しいものを表示させたいです。
###試したこと
上のコードのJOINや結合条件をいろいろいじってみましたがうまくいきません。
店舗コードをばらばらに表示するのはうまくいきます。
どうか皆様のお力をお貸しください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。