SQL CASE文で条件分岐処理を行う
男=0、女=1の性別カラムを持つ「社員マスタ」テーブルがあります。
| 社員コード | 社員名 | 性別 |
|---|---|---|
| 1 | テスト社員1 | 0 |
| 2 | テスト社員2 | 1 |
| 3 | テスト社員3 | 0 |
社員全員の性別を表示したい。
SQLは下記のようになります。
SELECT 社員名
,CASE 性別
WHEN 0 THEN '男'
WHEN 1 THEN '女'
ELSE '' END AS 性別
FROM 社員マスタ AS T1
--または
SELECT 社員名
,CASE
WHEN 性別 = 0 THEN '男'
WHEN 性別 = 1 THEN '女'
ELSE '' END AS 性別
FROM 社員マスタ AS T1| 社員名 | 性別 |
|---|---|
| テスト社員1 | 男 |
| テスト社員2 | 女 |
| テスト社員3 | 男 |
SELECT句で取得した値によって出力する項目を変更するにはCASE文を使用します。
上記の通り、CASE文には2通りの指定の仕方があります。
どちらの場合でも必ず、どの条件にも当てはまらなかった場合に出力するELSEを忘れずに使用する必要があります。また、CASE文の最後には必ずENDをつけるようにします。
そして、AS 別名を指定して、列名を指定します。
SQL CASE文で効率よく集計するテクニックで詳しく扱いますが、GROUP BYとはとても相性が良く、うまく組み合わせると、複雑になりそうな集計処理もシンプルに記述することができます。