2012-10-02 28 views
7

我想建立一個結合了以下邏輯CASE語句,但是SQL編譯器不喜歡「或」在我的發言:T-SQL語法的問題 - 使用或CASE語句

CASE expression 
WHEN expression1 OR expression2 
THEN <yadda yadda> 
ELSE <yadda yadda> 
END 

下面更具體的代碼:

CASE @var1 
WHEN '99' OR '22' 
      THEN   
       (CASE @var2 
       WHEN 'All' THEN col1 
       ELSE @var2 
       END) 
END 
+2

這是允許的。您的某個確切表達式中可能有錯誤。請張貼他們。 –

+0

在'CASE表達式'之後不允許有'OR'。語法有兩種形式。這是簡單的形式。您需要[搜索表單](http://msdn.microsoft.com/en-us/library/ms181765.aspx)。 –

回答

9
DECLARE @Variable INT; 
SET @Variable = 1; 

SELECT 
    CASE 
     WHEN @Variable = 1 OR @Variable = 2 THEN 'It is 1 or 2' 
     WHEN @Variable = 3 THEN 'It is 3' 
     ELSE 'It is not 1, 2, or 3' 
    END AS [SomeField] 

MSDN文檔爲CASEOR,和Expressions

4

根據您的編輯,你甚至不需要一個OR聲明:

CASE 
    WHEN @var1 IN ('99', '22')     
    THEN       
     (CASE @var2     
      WHEN 'All' 
      THEN col1     
      ELSE @var2     
      END) 
    END