2012-10-02 15 views
7

me gustaría construir una instrucción CASE que incorpora la siguiente lógica, pero el compilador SQL no le gusta la 'O' en mi declaración:T-SQL Sintaxis EDICIÓN - Usar o en sentencia CASE

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

código sea más específica a continuación:

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

Esto está permitido. Probablemente tenga un error en una de sus expresiones exactas. Por favor publícalos. –

+0

Después de 'CASE expression' no está permitido tener' OR'. Hay dos formas de la gramática. Esa es la forma simple. Necesita el [formulario buscado] (http://msdn.microsoft.com/en-us/library/ms181765.aspx). –

Respuesta

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] 

documentación de MSDN para CASE, OR y Expressions.

4

Sobre la base de sus ediciones, que ni siquiera necesita un OR declaración:

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