CASE式には、単純CASE式と検索CASE式があります。
単純CASE式の型
CASE 〇〇
WHEN ’A’ THEN 'AA'
WHEN 'B' THEN 'BB'
ELSE 'その他' END
〇〇がAのときAA、BのときBB、それ以外のときはその他
検索CASE式の型
CASE WHEN 〇〇 = ’A’ THEN 'AA'
WHEN 〇〇 = 'B' THEN 'BB'
ELSE 'その他' END
これも同じく、〇〇がAのときAA、BのときBB、それ以外のときはその他
という意味
・単純CASE式のほうが簡潔に書けるが、できることも限られている
・単純CASE式で書ける式は、検索CASE式でも書くことができる
・真になるWHEN句が見つかった時点で打ち切られて、残りのWHEN句は無視されるから注意する
'2番'が表示されることは絶対にない例
CASE WHEN col_1 IN ('a','b') THEN '1番'
WHEN col_1 IN ('a') THEN '2番'
ELSE 'その他' END
col_1 に 'a' または 'b' が含まれているとき '1番'
col_1 に 'a' が含まれているとき '2番'
そらそうや。
注意点1
- 返ってくる値の型を統一する
- 返ってくる値が、1つは文字型、もう1つは数値型というのは認められない
注意点2
- ENDを書き忘れないようにする
- CASE式にENDは必須
注意点3
- ELSEは必ず書くようにクセをつける
- 書かなくてもエラーにはならないが、書いた方がミスが減るし、バグが発生したときに修正しやすい
簡潔にいうと、、、
CASE式は、簡単にいうとラベルの読み替えを行っているだけ。
- Aが1のときは男
- Aが2のときは女
など。
しかし、集約関数(SUMやAVG)とGROUP BYと組み合わせると、絶大な効果を発揮する。