我有一个employee表,我现在使用存储过程检索记录,我需要在存储过程中添加一个条件 -
仅当employeeType =' MD'然后检查employeeReportableIndicator =' N' ,如果' N'然后不要取这条记录。
这隐含地意味着 -
1)如果employeeType!=' MD'无论employeeReportableIndicator列值如何,我都应该获取记录。
2)如果employeeType =' MD'和employeeReportableIndicator =' Y'获取值。
为了简化存储过程,我只是编写了一个涵盖上述条件的小查询。这就是我到现在为止所做的事情
select *
from employee
where somecondition1
and somecondition2
and CASE when employeeType='MD'
then (CASE when employeeReportableIndicator='N'
then false
else true
END)
END
上面给出了语法错误
意外的令牌" END-OF-STATEMENT"发现"否则为真END)END"。预期的令牌可能包括:"" .SQLSTATE = 42601
此外,我的方法是正确编写查询,请建议是否有更好的解决方案。我正在使用DB2和Sybase
答案 0 :(得分:0)
您不需要CASE
,只需要OR
条件:
Select *
From Employee
Where SomeCondition1
And SomeCondition2
And
(
EmployeeType <> 'MD'
Or
(
EmployeeType = 'MD'
And EmployeeReportableIndicator = 'Y'
)
)
答案 1 :(得分:0)
而不是在你在哪里使用AND - OR
的情况select *
from employee
where somecondition1
and somecondition2
and ( ( employeeType='MD' AND employeeReportableIndicator='Y')
OR ( employeeType!='MD ))