602 votes

SQL Server : CASE WHEN ou alors d’autre fin => l’OR n’est pas supporté

L’OR dans la partie lors d’une instruction CASE n’est pas pris en charge. Comment puis-je résoudre il ?

1113voto

OMG Ponies Points 144785

Ce format nécessite d’utiliser soit :

Sinon, utilisez :

269voto

Darren Points 389
CASE
  WHEN ebv.db_no = 22978 OR 
       ebv.db_no = 23218 OR
       ebv.db_no = 23219
  THEN 'WECS 9500' 
  ELSE 'WECS 9520' 
END as wecs_system 

59voto

Cade Roux Points 53870
CASE WHEN ebv.db_no  IN (22978, 23218, 23219) THEN 'WECS 9500' 
  ELSE 'WECS 9520' 
END as wecs_system 

56voto

Alfaplus Points 124

Vous pouvez utiliser l'une des expressions que LORSQUE a, mais vous ne pouvez pas mélanger les deux.

1) LORSQUE when_expression Une expression simple pour qui input_expression est comparé quand le CAS simple le format utilisé. when_expression toute expression valide. Les types de données de input_expression et chaque when_expression doit être le même ou doit être une conversion implicite.

2) LORSQUE Boolean_expression Est l'expression Booléenne évaluée lors de l'utilisation de la recherche de CAS de format. Boolean_expression est valable, toute expression Booléenne.

Vous pourriez programme:

1)

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

2)

CASE 
         WHEN ListPrice =  0 THEN 'Mfg item - not for resale'
         WHEN ListPrice < 50 THEN 'Under $50'
         WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
         WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
         ELSE 'Over $1000'
      END

Mais dans tous les cas, vous pouvez s'attendre à ce que la variable de classement va être comparé à une valeur de type boolean expression.

http://msdn.microsoft.com/en-us/library/ms181765.aspx

34voto

JNK Points 32743

Essayer

 CASE WHEN ebv.db_no IN (22978,23218,23219) THEN 'WECS 9500' ELSE 'WECS 9520' END
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X