【SQL】CASE文を重ねて使う方法

CASE文とは

SQLを利用しているとCASE文を利用するケースが多いと思います。

通常は、このようなCASE文になりますが、

SELECT
    CASE
        WHEN col = '○○' THEN 1
        ELSE 0
FROM
    table

複雑な条件が重なると

SELECT
    CASE
        WHEN col = '○○' AND col2 = '☓☓' AND col3 = '▲' THEN A
        WHEN col = '○○' AND col2 = '□□' AND col3 = '▽' THEN B
        WHEN col = '♢' AND col2 = '➂' AND col3 = '〆' THEN C
        ELSE 0
FROM
    table

WHENの中に、何個も条件が入り、
非常に長い条件文ができあがってしまいます。

この対処法として、CASE文をうまく重ねて利用する方法をご紹介します。

もしCASE文について、知識が不安な方や、
もう少しCASE文の基礎知識を身に着けたい方は、
こちらの書籍がおすすめです。

スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ)

スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ)

CASE文を重ねる

早速、CASE文を重ねた例文をご紹介します。

SELECT
    CASE
        WHEN col = '○○' THEN 
        CASE
            WHEN col2 = '☓☓' AND col3 = '▲' THEN A
            WHEN col2 = '□□' AND col3 = '▽' THEN B
            ELSE NULL
        END
        WHEN col = '♢' AND col2 = '➂' AND col3 = '〆' THEN C
        ELSE 0
    END
FROM
    table

このように、1つ目のCASE文の中に
もうひとつCASE文を書きます。

すこし文章が複雑に見えますが、
条件を書く回数が減るので、メンテナンス性も向上します。