簡體   English   中英

SQL 中的無表達式 CASE 內有多個 WHEN?

[英]Multiple WHEN inside no-expression CASE in SQL?

    DECLARE @TestVal int
SET @TestVal = 5

SELECT
    CASE
        WHEN @TestVal <=3 THEN 'Top 3'
        ELSE 'Other'
    END

我在網上看到了這個示例代碼,但是我找不到沒有表達式並且它有多個 WHEN 的示例,所以我想知道這種類型的東西是否可以:

    DECLARE @TestVal int
SET @TestVal = 5

SELECT
    CASE
        WHEN @TestVal <=3 THEN 'Top 3'
                WHEN (select ...) = 1 THEN 'Other Value'
                WHEN (select ...) = 2 THEN 'Other Value 2'
        ELSE 'Other'
    END

還是我需要為每一行說 CASE WHEN?

是的,這很好,但我會垂直排列“WHEN”並更像這樣解釋:

SELECT
    CASE
        WHEN @TestVal <=3  THEN 'Top 3'
        WHEN @TestVal <=10 THEN 'Top 10'
        WHEN @TestVAl <=25 THEN 'Top 25'
        ELSE 'Other'
    END

格式可能只是 markdown 故障,但您示例中的(select...)使應該是更簡單的片段變得復雜。

案例采用以下形式

CASE WHEN Condition THEN Result
     WHEN Condition2 THEN Result2
ELSE Default
END

編輯

這假設您使用 Microsoft SQL 服務器其他 DBMS 可能不同

    SELECT
       CASE
          WHEN @TestVal <=3  THEN 'Top 3'
          WHEN @TestVal <=10 THEN 'Top 10'
          WHEN @TestVAl <=25 THEN 'Top 25'
          ELSE 'Other'
       END

關於嵌套 case 語句,也可以這樣做(sql 中最多允許 10 個嵌套 case 語句)

http://msdn.microsoft.com/en-us/library/ms181765.aspx

暫無
暫無

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

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