【发布时间】:2017-09-25 18:16:39
【问题描述】:
我有一个员工表,我使用存储过程从中检索记录,现在我需要在存储过程中添加一个条件 --
仅当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
上面是给我语法错误
在“else true END ) END”之后发现了一个意外的标记“END-OF-STATEMENT”。预期的标记可能包括:“”.SQLSTATE=42601
这也是我编写正确查询的方法,如果有更好的解决方案,请提出建议。我正在使用 DB2 和 Sybase
【问题讨论】:
标签: sql db2 case sybase case-when