SQL:CASE WHEN

 
PostgreSQLだけというわけじゃなくて、いまのいままで(自分が)知らなかったのがびっくりというネタ。
それは、SQL文での CASE式。昔々、Accessで IIF(三項演算子)は使ったことがあったけど、SQLに IIFがないというのも、これを書こうと思って、ググって知ったくらい。

SELECT name, CASE sex WHEN 1 THEN '男' WHEN 2 THEN '女' ELSE '未記入' END as sex
FROM test_tbl

ほかの使い方はこちら「SQL の CASE 式って知ってますか?」参照。

SELECT count(*),
  CASE code WHEN 'M' THEN '男性' WHEN 'F' THEN '女性' ELSE 'オカマ?' END
FROM table1 GROUP BY code;

SELECT
 SUM( CASE WHEN code = 'M' THEN 1 ELSE 0 END ),  -- 男性の人数
 SUM( CASE WHEN code = 'F' THEN 1 ELSE 0 END )   -- 女性の人数
FROM table1;

CONSTRAINT check_salary  -- 平社員は給与が20万円以下という制約の例
 ( CASE WHEN code = '平社員' THEN 
   CASE WHEN salary = 100000 THEN 販売価格 * 0.9 ELSE 販売価格 END;