2009-02-24 33 views
3
DECLARE @TestVal int 
SET @TestVal = 5 

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

我看到這個代碼示例在線,但我找不到那裏有沒有表達一個例子,它有一個以上的情況下,所以我想知道,如果這種類型的事情是確定:多個WHEN裏面沒有表達CASE在SQL?

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時間嗎?

回答

5

Case採用以下形式

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

編輯

這是假設您使用Microsoft SQL Server等數據庫管理系統可能會有所不同

7

是的,這很好,但我會排隊「的時候並且更像這樣解釋:

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

格式可能只是一個降價小故障,但在你的例子中的(select...)複雜的應該是一個更簡單的片段。

0
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