2012-10-02 12 views
7

Vorrei costruire un'istruzione CASE che incorpora la seguente logica, ma il compilatore SQL non piace la 'O' nella mia dichiarazione:T-SQL SYNTAX EDIZIONE - utilizzare o nella dichiarazione CASE

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

codice più specifico di seguito:

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

Ciò è consentito. Probabilmente hai un errore in una delle tue espressioni esatte. Per favore, pubblicali. –

+0

Dopo 'espressione CASE' non è consentito avere 'OR'. Esistono due forme di grammatica. Questa è la forma semplice. È necessario il [modulo di ricerca] (http://msdn.microsoft.com/en-us/library/ms181765.aspx). –

risposta

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] 

documentazione MSDN per CASE, OR e Expressions.

4

Sulla base le modifiche, non avrete nemmeno bisogno di un OR dichiarazione:

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