[SQL Server] WHERE 条件内での CASE 文を使った取得項目の分岐

Transact-SQL (SQL Server) でも、WHERE 条件内で CASE 文を使用できる。単純 CASE 式、検索 CASE 式、いずれもサポートされる。
-- HAGE 列の値によって 'hogehoge' と比較する項目を分岐させる

SELECT *  FROM  HOGE
WHERE
(
 CASE HAGE
   WHEN 1 THEN AAA
   WHEN 2 THEN BBB
   ELSE  CCC
  END
) = 'hogehoge'

他の条件と AND や OR で結合もできる。
なお、括弧はなくても良いが、見通しを良くするという意味で付けたほうが丁寧だろうね。

このブログの人気の投稿

コピーした行の挿入が表示されない時はフィルタされていないかチェック

Excel で一部の図形だけ固定する