1. ホーム
  2. sql

[解決済み] Oracle SQLのCASE ... WHEN式

2023-04-25 07:02:50

質問

1列のテーブルがあり、以下のデータを持っています。

Status
a1
i
t
a2
a3

selectクエリで以下のような結果を表示させたい。

Status| STATUSTEXT
a1    | Active
i     | Inactive
t     | Terminated
a2    | Active
a3    | Active

一つの方法として、selectクエリでSwitch When式を使用する方法がありました。

SELECT
status,
CASE status 
WHEN 'a1' THEN 'Active'
WHEN 'a2' THEN 'Active'
WHEN 'a3' THEN 'Active'
WHEN 'i' THEN 'Inactive'
WHEN 't' THEN 'Terminated'
END AS StatusText
FROM stage.tst

を書かなくて済むような、他の方法はないのでしょうか? Active Statusを3回表現する場合 と、1回の式でアクティブ状態全体をチェックできるのでしょうか?

どのように解決するのですか?

を使用することができます。 IN

のようなものです。

SELECT
  status,
  CASE
    WHEN STATUS IN('a1','a2','a3')
    THEN 'Active'
    WHEN STATUS = 'i'
    THEN 'Inactive'
    WHEN STATUS = 't'
    THEN 'Terminated'
  END AS STATUSTEXT
FROM
  STATUS

このデモをご覧ください

SQL Fiddleデモ