2017-10-05 17 views
3

J'ai essayé de mettre un opérateur OU dans l'instruction CASE mais cela ne fonctionne pas.Pourquoi un opérateur OR ne fonctionne-t-il pas dans l'instruction CASE?

Where W.Organization_ID = 
CASE @IsAdmin OR @IsChiefEngineer 
WHEN 1 
THEN W.Organization_ID 
ELSE @OrganizationID END 

Je veux vérifier si l'un ou l'ingénieur IsAdmin IsChief, que ce soit ou ils sont alors 1 Organisation autre @OrganizationID

+0

Cas _expression_, non déclaration. – jarlh

+1

La syntaxe que vous utilisez ne fonctionne pas avec plusieurs variables. Consultez les réponses ci-dessous pour une solution de contournement. –

Répondre

2

Presque, modifiez votre déclaration de cas un peu:

CASE 
WHEN @IsAdmin = 1 OR @IsChiefEngineer = 1 
THEN W.Organization_ID 
ELSE @OrganizationID 
END 
+2

Cette réponse a déjà été donnée. –

+2

il y avait un écart de 15 secondes entre les réponses .... j'étais déjà en poste – dbajtr

1

Vous pouvez l'écrire comme suit:

Where W.Organization_ID = CASE 
    WHEN @IsAdmin = 1 OR @IsChiefEngineer = 1 
     THEN W.Organization_ID 
    ELSE @OrganizationID END 
0

Vous devez tester tous les paramètre "inside" l'opérateur OR

CASE 
     WHEN @IsAdmin = 1 OR @IsChiefEngineer = 1 
     THEN W.Organization_ID 
     ELSE @OrganizationID 
    END 
+0

Ne fonctionne pas. (Pas mon downvote.) – jarlh

+0

Désolé, je n'ai pas fait attention à votre code, cela devrait fonctionner, mais il a déjà été répondu. – kiks73