CASE文で複雑な条件を指定

Tag:

CASE文を使うと複雑な条件を指定できます。

基本書式

/* 指定方法1 */
CASE 評価対象カラム名
    WHEN 条件値1 THEN 処理
    [WHEN 条件値2 THEN 処理] ...
    [ELSE 処理]
END

/* 指定方法2 */
CASE
    WHEN 条件1 THEN 処理
    [WHEN 条件2 THEN 処理] ...
    [ELSE 処理]
END

使用例

以下、下記テーブルを例に説明します。

testtable
id old region
1 50 四国
2 23 九州
3 11 本州
4 80 北海道
5 33 本州
SELECT句での使用例
データ値によって表示を変えたい場合などに使用します。

SELECT id, (CASE WHEN (old < 20)               THEN 'A' 
                 WHEN (old >= 20 AND old < 50) THEN 'B'
                 ELSE 'C' END) as type 
FROM testtable;
結果
id type
1 C
2 B
3 A
4 C
5 B
GRUOP BY句での使用例
SELECT COUNT(id), (CASE WHEN (old < 20)               THEN 'A'
                       WHEN (old >= 20 AND old < 50) THEN 'B'
                       ELSE 'C' END) as type 
FROM testtable
GROUP BY CASE WHEN (old < 20)               THEN 'A'
              WHEN (old >= 20 AND old < 50) THEN 'B'
              ELSE 'C' END
結果
COUNT(id) type
1 A
2 B
2 C
ORDER BY句での使用例
任意の順序をつけたい場合に使用します。

SELECT id, region
FROM testtable
ORDER BY CASE region WHEN '北海道' THEN '1'
                     WHEN '本州'   THEN '2'
                     WHEN '四国'   THEN '3'
                     WHEN '九州'   THEN '4'
                     ELSE '' END
結果
id region
4 北海道
3 本州
5 本州
1 四国
2 九州

スポンサーリンク