2011-10-17 10 views
6

Tengo varias condiciones y el resultado para ellas debería ser el mismo. He buscado en la red y encontré cosas como esta:TSQL y caso cuando con múltiples whens?

CASE ProductLine 
    WHEN 'R' THEN 'Road' 
    WHEN 'M' THEN 'Mountain' 
    WHEN 'T' THEN 'Touring' 
    WHEN 'S' THEN 'Other sale items' 
    ELSE 'Not for sale' 
    END 

Eso es bueno, pero no es lo que necesito, para mí es más como R, M, T y S tienen todos el mismo resultado y A, B, C, D por ejemplo no tiene. ¿Cómo haría esto? No puedo conectarme con O, o al menos no pude :) Algo como esto tal vez?

CASE ProductLine 
    WHEN 'R' OR 'M' OR ... THEN 'Road' 
    ELSE 'Not for sale' 
    END 

Respuesta

7

Cambio a "searched" CASE expression. Tiene una expresión CASE "simple" por encima

CASE 
    WHEN ProductLine IN ('R', 'M', ...) THEN 'Road' 
    ELSE 'Not for sale' 
END 

Desde el enlace de MSDN anterior:

Simple CASE expression: 
CASE input_expression 
    WHEN when_expression THEN result_expression [ ...n ] 
    [ ELSE else_result_expression ] 
END 

Searched CASE expression: 
CASE 
    WHEN Boolean_expression THEN result_expression [ ...n ] 
    [ ELSE else_result_expression ] 
END 
+1

Nice! Por cierto, ¿por qué la expresión OR no es una expresión booleana? – sll

+0

@sll: SQL Server no admite la expresión booleana – gbn

Cuestiones relacionadas