WHEN中的SQL案例

时间:2016-06-14 05:42:51

标签: sql oracle11g

可能这很愚蠢,但我们可以在另一个案例中写一个案例吗

下面代码为我工作,但我不确定这是否正确。

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所以我不确定这是否是一个好习惯。有没有更好的方法来获得相同的结果?

1 个答案:

答案 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