2016-06-14 39 views
0

可能這是愚蠢的,但我們可以寫一個案例另一個案例的時候SQL案例內部時

下面的代碼爲我工作,但我不知道這是否正確。

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

如果此代碼的工作你爲什麼要問這是否正確?你想知道是否有更好的方法來做到這一點?請給我們更多的細節,你想實現。 –

回答

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