外部結合のSQLの書き方について
SQLの書き方について質問です。
マスタにある項目CDはすべて表示。そこにデータ項目を表示させる。マスタにある項目CDがデータにない場合は、表示できない部分以外はNULLで表示させるにはどうしたらよいのでしょうか?
思うようにデータが取得できません。ORACLE8iです。
例えば
select * from マスタ
where データCD = '0009' の結果が
+-------------------------------------+
+ データCD | SEQ番号 | 項目CD | 項目名 |
+-------------------------------------+
0009 | 1 | 05000 | 名称1
0009 | 2 | 05100 | 名称2
0009 | 3 | 05200 | 名称3
で、
select * from データ
and データ.本支所CD = '999'
and データ.部門CD = '99' の結果が
+------------------------------------------+
+ 本支所CD | 部門CD | 項目CD | 発生額07月 |
+------------------------------------------+
999 | 99 | 05000 | 1,234
999 | 99 | 05100 | 1,235
だった場合、
select
SEQ番号,
本支所CD,
マスタ.項目CD,
マスタ.項目名,
発生額07月
from マスタ,データ
where マスタ.データCD = '0009'
and マスタ.項目CD = データ.項目CD
and データ.本支所CD = '999'
and データ.部門CD = '99'
を実行すると、
+--------------------------------------------------------+
| SEQ番号 | 本支所CD | 部門CD | 項目CD | 項目名 | 発生額07月 |
+--------------------------------------------------------+
| 1 | 999 | 99 |05000 | 名称1 | 1,234
| 2 | 999 | 99 |05100 | 名称2 | 1,235
+--------------------------------------+
と結果が返ってきますが、
+-------------------------------------------------------+
| SEQ番号 | 本支所CD | 部門CD | 項目CD | 項目名 | 発生額07月 |
+-------------------------------------------------------+
| 1 | 999 | 99 |05000 | 名称1 | 1,234
| 2 | 999 | 99 |05100 | 名称2 | 1,235
| 3 | 999 | 99 |05200 | 名称3 | NULL
+--------------------------------------+
とするためには
どういうSQLを作成したらよいのでしょうか?
「where マスタ.データCD(+) = '0009'
and マスタ.項目CD = データ.項目CD(+)
and データ.本支所CD(+) = '999'
and データ.部門CD(+) = '99' 」
にしてもだめでした。
※「マスタに存在して、データに存在しない項目コードがありますが、
それも発生額07月はNULLでよいので、それ以外の項目をすべて表示したい」のです。
説明不足だとは思いますが、どなたかご教授のほどよろしくお願いいたします。相当行き詰ってます。
お礼
早速のご回答ありがとうございます!!! とても助かりました!!