ちきぬたのブログ

Thank you for choosing Chikinuta's blog

SELECT文でデータがあればなければのSQL(Oracle) - CASE文での条件分岐的方法

【広告】

SELECT文で同一項目を二つのテーブルから条件分岐してとってくる方法。

つまり、データがあればなければのSQL文。

それは、SELECT分で条件分岐として、同一項目をAが合った場合Aからとってきて、なかった場合Bからとってくる方法である。

これはCASE分で実現できる。

以下に例文を書く。
Aをもとに、BとCのテーブルを結合して引っ張ってくるSQLであるが、
AのTANUKICHIとRASCALという項目を、BのIDがAのIDと同一であったらBを入れ、違ったらAをそのまま入れるという文である。

つまり、Aのあるレコードに対して、そのレコードに対応する項目がBにあったら、Bを入れ、なかったらAを入れる文である。
(ちなみに、AとBはIDとNAMEの二つをキーとして結合させる想定。Cも同様)

SELECT
A.ID,
A.NAME,
C.CD

CASE B.ID
WHEN A.ID THEN B.CHIKINUTA
ELSE A.CHIKINUTA
END AS CHIKINUTA,

CASE B.ID
WHEN A.ID THEN B.RASCAL
ELSE A.RASCAL
END AS RASCAL

FROM
TableA A

LEFT OUTER JOIN TableB B
ON
B.ID= A.ID
AND
B.NAME = A.NAME

LEFT OUTER JOIN TableC C
ON
C.ID = A.ID
AND
C.NAME = A.NAME

となる。

ほらあなより愛をこめて
ちきぬた

プロとしてのOracle PL/SQL入門 【第3版】(Oracle 12c、11g、10g対応) (Oracle現場主義)
アシスト教育部
SBクリエイティブ
売り上げランキング: 149,815