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
とはとても相性が良く、うまく組み合わせると、複雑になりそうな集計処理もシンプルに記述することができます。