2011-10-17 17 views
6

Ho diverse condizioni e il risultato dovrebbe essere lo stesso. Ho cercato in rete e ho trovato cose come questa:TSQL e caso quando con più 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 

Questo è bello, ma non quello che mi serve, per me il suo più come R, M, T e S hanno tutti lo stesso risultato e A, B, C, D per esempio non hanno. Come lo farei? Non riesco a collegarmi con OR, o almeno non sono riuscito a :). Forse qualcosa del genere?

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

risposta

7

Passaggio a "searched" CASE expression. Si dispone di un espressione CASE "semplice" di cui sopra

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

Dal link qui sopra MSDN:

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

Nizza! BTW, perché l'espressione OR non è un'espressione booleana è il caso – sll

+0

@sll: SQL Server non supporta l'espressione booleana – gbn

Problemi correlati