------------------------------

解決済みの質問

------------------------------

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

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

投稿日時 - 2010-09-13 18:58:25

連想キーワード:

QNo.6180015

困ってます

質問者が選んだベストアンサー

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

投稿日時 - 2010-09-14 09:22:58

ANo.1

4人が「このQ&Aが役に立った」と投票しています

あわせてチェックしたい
  • UKサイズ。 ...
  • Violet UK ...
  • UKって? ...
PR

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら