質問: 場合によって条件を変えるsql oracle環境下、sqlにて以下のような条件でデータを取得したいです。 aテーブルとbテーブルを結合して、bテーブルから名称を取得する。 id (key) 番号1 番号2 a01 001 n0001 a02 null n0002 code(key) 名前 番号1 番号2 c0001 太郎 001 n0001 c0002 次郎 002 n0002 (1)a.番号が入力されていれば a.番号1=b.番号1 and a.番号2=b.番号2を条件にする (2)a.番号が入力されていなければ a.番号=b.番号を条件からはずす。 a.番号2=b.番号2 のみで検索する。 <欲しい結果> a01→太郎を取得 a02→次郎を取得 入力されていたら条件に加え、入力されていなかったら 条件から外す、というsqlを教えていただけないでしょうか。 よろしくお願いいたします。
回答: #5です。bテーブルとエイリアスが不足してました。 (1)と(2)をunionしてはどうでしょう? select a.id, b.名前 from aテーブル a, bテーブル b where a.番号1 is not null and a.番号1 = b.番号1 union select a.id, b.名前 from aテーブル a, bテーブル b where a.番号1 is null and a.番号2 = b.番号2 ;