簡體   English   中英

WHEN內的SQL Case

[英]SQL Case inside WHEN

也許這很愚蠢,但是我們可以在另一個案例的WHEN里面寫一個案例嗎?

下面的代碼為我工作,但我不確定這是否正確。

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,因此我不確定這是否是一個好習慣。 有沒有更好的方法來獲得相同的結果?

是的你可以。 MSDN還通知我們,在SQL SERVER中,彼此之間最多只能嵌入10個CASE表達式。 奇怪的是,對ORACLE的搜索對這一潛在限制產生了負面影響。 可能重要的是要注意。

當然,您也可以使用更多的WHEN語句(在ORACLE中最多為255),但這僅在不需要嵌套邏輯(例如比較兩個不同的列值)的情況下才有效。

來源: https//msdn.microsoft.com/zh-cn/library/ms181765.aspx http://www.techonthenet.com/oracle/functions/case.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM