前提・実現したいこと
3つのテーブルを結合して作成したを「合体テーブル」
結合させたい軸のテーブルを「軸テーブル」
軸テーブルに一致したレコードを外部結合させたい「結合テーブル」
とします。
「軸テーブル」のカラムCの値が'09'だった場合のみ
Cの結合条件を追加したいです。
結合テーブルはカラムA、Bが主キーの複合型です。
書き方を職場で統一しているので、できるだけこれに近い書き方で解決できたら幸いです。
・結合はJOIN句ではなくWHERE句
・外部結合は(+)で表現する
発生している問題・エラーメッセージ
ORA-00905
該当のソースコード
SQL
1SELECT * 2 3FROM 軸テーブル, 結合テーブル1 4 5WHERE 軸テーブル.A = 結合テーブル1.A(+) 6AND 軸テーブル.B = 結合テーブル1.B(+) 7AND (CASE WHEN 軸テーブル.C = '09' THEN 軸テーブル.C = 結合テーブル1.C(+) 8 ELSE --軸テーブル.Cが<>'09'の場合は、この条件は無視したい 9 END)
試したこと
WHEREの横にCASE文を置いて、条件全体で分けたり、JOIN ON句の結合条件で試してみましたが、
ダメでした。
私のSQLの理解度があまり高くなく、条件分岐以外での実現方法が思いつきません。
CASE以外でも実現方法があれば教えていただきたいです。
補足情報(FW/ツールのバージョンなど)
環境(足りない部分は教えてください)
windows7
oracle 11g
オブジェクトブラウザ10
また職場が外部のネットワークにアクセスできないため、思い出しながらの記述となっています。
ミスがあれば修正します。
一部の解決できない部分を抽出していますが、
実際のSQL文は、2重のサブクエリを用いた150行ほどのものになっています。
教えていただいた方法で解決できなかった場合は、そちらの部分も記述します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。