可能这很愚蠢,但我们可以在另一个案例中写一个案例吗?
下面代码为我工作,但我不确定这是否正确。
SELECT
(SUM(CASE
WHEN (
CASE
WHEN r.status < b.status
THEN r.status
ELSE b.status
END
) = '4'
THEN 1
ELSE 0
END)
) AS WORKED
FROM
tbl1 r, tbl2 b
关于嵌套案例的所有例子都像是在一个THEN中的CASE所以我不确定这是否是一个好习惯。有没有更好的方法来获得相同的结果?
答案 0 :(得分:1)
是的,你可以。 MSDN还告诉我们,在SQL SERVER中,最多只能有10个CASE表达式相互嵌入。奇怪的是,搜索ORACLE对此潜在限制的负面影响。可能很重要。
当然,您也可以使用更多WHEN(在ORACLE中最多255个)语句,但这只适用于您不需要嵌套逻辑(例如比较两个不同的列值)
来源: https://msdn.microsoft.com/en-us/library/ms181765.aspx http://www.techonthenet.com/oracle/functions/case.php