任何人都可以将以下嵌套的IIF解码为SQL中的CASE语句。我知道在SQL Server 2012中允许使用IIF,但我发现很难轻易掌握嵌套的IIF逻辑..以下是我的嵌套IIF声明
IIF(IIF(TABLE_A.Col_1 = 0, TABLE_A.Col_2 + (2*TABLE_A.Col_3), TABLE_A.Col_1)<=.5, 'A', 'B') AS Result
非常感谢任何帮助。
答案 0 :(得分:3)
这应该是等价的:
CASE
WHEN
CASE
WHEN TABLE_A.Col_1 = 0
THEN TABLE_A.Col_2 + (2*TABLE_A.Col_3)
ELSE TABLE_A.Col_1
END <= .5
THEN 'A'
ELSE 'B'
END As Result
答案 1 :(得分:1)
CASE
WHEN
(CASE
WHEN TABLE_A.Col1= 0
THEN TABLE_A.Col2_2 + (2*TABLE_A.Col3)
ELSE TABLE_A.Col1
END) <=0.5
THEN 'A'
ELSE 'B'
END
AS result
答案 2 :(得分:0)
我认为这可以归结为一个CASE表达式:
CASE
WHEN TABLE_A.Col_1 = 0 AND TABLE_A.Col_2 + (2*TABLE_A.Col_3) <= .5 THEN 'A'
WHEN TABLE_A.Col_1 <> 0 AND TABLE_A.Col_1 <= .5 THEN 'A'
ELSE 'B'
END
答案 3 :(得分:0)
现在已经过时了,还有其他答案已经有效,但是为了好玩,可以将它写成一个没有任何CASE语句的函数表达式,如下所示:
char(65 + ceiling(ceiling(COALESCE(NULLIF(TABLE_A.Col_1, 0), TABLE_A.Col_2 + (2*TABLE_A.Col_3))) - .5 / 10000000000000))
功能方法在具有良好索引的大型集合上表现明显更好的可能性非常小。
这是我的概念验证测试脚本: