【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問付き! (スッキリシリーズ)
- 作者: 中山清喬,飯田理恵子,株式会社フレアリンク
- 出版社/メーカー: インプレス
- 発売日: 2018/11/30
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
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文を書きます。
すこし文章が複雑に見えますが、
条件を書く回数が減るので、メンテナンス性も向上します。