MS SQL ServerでOracleのDECODE MySQLのELT
MS SQL ServerではCASE WHENが使えるので基本的にはこちらを使う。
SQL Server 2012 からMySQLのELTと同等のフォーマットのCHOOSEが使える。
CHOOSE ( index, val_1, val_2 [, val_n ] )
これと先のエントリーのビット位置算出を使用すると
SELECT CHOOSE (ROUND(LOG(<ターゲットカラム>)/LOG(2),0,1),'A','B','C','D','E')
ちなみにSQL Server 2012からMySQLのIF関数と同じIIFも使えるようになった。
2008のときはこちらもCASE WHENを使用する必要があった。
IIF ( boolean_expression, true_value, false_value )