2017-10-05 26 views
3

我一直试图在CASE语句中放入一个运算符,但它不起作用。为什么在CASE语句中没有OR操作符?

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

我要检查是否有IsAdmin或IsChief工程师,要么或者是1,那么其他组织@OrganizationID

+0

Case _expression_,not statement。 – jarlh

+1

您正在使用的语法不适用于多个变量。查看下面的解答以获得解决方法。 –

回答

2

差不多,只是改变你的case语句有点:

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

已经给出了这个答案。 –

+2

答案之间有15秒的差距....我已经发布 – dbajtr

1

可以按如下方式写:

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

您应该测试每参数“内部”的OR运算符

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

不起作用。 (不是我downvote。) – jarlh

+0

对不起,我没有注意到你的代码,这应该工作,但它已经回答了。 – kiks73