Sql 嵌套IIF语句的大小写等价物
任何人都可以将以下嵌套IIF解码为SQL中的CASE语句。。我知道SQL Server 2012中允许IIF,但我发现很难轻松掌握嵌套IIF逻辑。。下面是我的嵌套IIF语句Sql 嵌套IIF语句的大小写等价物,sql,Sql,任何人都可以将以下嵌套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 IIF(IIF(表A.Col_1=0,表A.Col_2+(2*表A.Col_3),表A.Col_1)CASE 什么
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
IIF(IIF(表A.Col_1=0,表A.Col_2+(2*表A.Col_3),表A.Col_1)CASE
什么时候
(案例
当表A.Col1=0时
然后是表A.Col2(2*表A.Col3)
ELSE表A.Col1
结束)案例
什么时候
(案例
当表A.Col1=0时
然后是表A.Col2(2*表A.Col3)
ELSE表A.Col1
结束)这应该是等效的:
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
案例
什么时候
案例
当表A.Col_1=0时
然后是表A.列2+(2*表A.列3)
ELSE表A.Col\u 1
END这应该是等效的:
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
案例
什么时候
案例
当表A.Col_1=0时
然后是表A.列2+(2*表A.列3)
ELSE表A.Col\u 1
END我认为这就是一种情况下的表达:
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
案例
当TABLE_A.Col_1=0和TABLE_A.Col_2+(2*TABLE_A.Col_3)时,我认为这就是它在一种情况下的表达式:
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
案例
当TABLE_A.Col_1=0和TABLE_A.Col_2+(2*TABLE_A.Col_3)时,这已经很旧了,还有其他答案已经可以使用了,但为了好玩,可以将其作为函数表达式编写,而不需要任何CASE语句,如下所示:
char(65 + ceiling(ceiling(COALESCE(NULLIF(TABLE_A.Col_1, 0), TABLE_A.Col_2 + (2*TABLE_A.Col_3))) - .5 / 10000000000000))
函数方法在具有良好索引的大型集合上表现得明显更好的可能性很小
以下是我的概念验证测试脚本:
这一点现在已经很古老了,还有其他一些答案已经可以使用了,但为了好玩,可以将其作为一个函数表达式编写,而不需要任何CASE语句,如下所示:
char(65 + ceiling(ceiling(COALESCE(NULLIF(TABLE_A.Col_1, 0), TABLE_A.Col_2 + (2*TABLE_A.Col_3))) - .5 / 10000000000000))
函数方法在具有良好索引的大型集合上表现得明显更好的可能性很小
以下是我的概念验证测试脚本:
@拉斐尔..对如此迅速的反应印象深刻..谢谢!@Raphael..对如此迅速的反应印象深刻..谢谢!