dポイントプレゼントキャンペーン実施中!

------------------------------
 テーブル: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"に変更したい」という条件を追加したいのですが、どのような式を書けばよろしいでしょうか?

よろしくお願いいたします。

A 回答 (1件)

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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す