------------------------------
テーブル:TABLE1
------------------------------
USER_ID TYPE COUNTRY
------------------------------
001 A JAPAN
002 A UK
003 A USA
004 Z UK
------------------------------
------------------------------
テーブル:TABLE2
------------------------------
COUNTRY STATUS
------------------------------
JAPAN 001
CHINA 001
UK 002
USA 002
------------------------------
---------------------------------
テーブル:TABLE3
---------------------------------
USER_ID TYPE COUNTRY STATUS
---------------------------------
001 A JAPAN 001
002 A UK 002
003 A USA 002
004 Z UK 999 ← ※1)002から999に変更したい
---------------------------------
TABLE1とTABLE2を結合してTABLE3を作成したいと思います。
===========================================================
SELECT a.USER_ID, a.TYPE, a COUNTRY, b STATUS
FROM TABLE1 a LEFT JOIN TABLE2 b ON a.COUNTRY=b.COUNTRY
===========================================================
そこで、上記のSQL文を作成しましたが、そこに追加で条件を加えたいと考えています。
※1)のSTATUSの値は、本来は"002"になりますが、TYPEが"Z"の場合は、STATUSの値を強制的に"999"に変更したいです。
SQL文で「TYPEが"Z"の場合は、STATUSの値を強制的に"999"に変更したい」という条件を追加したいのですが、どのような式を書けばよろしいでしょうか?
よろしくお願いいたします。
CASE式を利用すればいいです。
SELECT a.USER_ID, a.TYPE, a COUNTRY,
CASE WHEN b.STATUS = 'Z' THEN '999' ELSE b.STATUS END STATUS
FROM TABLE1 a LEFT JOIN TABLE2 b ON a.COUNTRY=b.COUNTRY