我有我從中檢索使用一個存儲過程的記錄,現在我需要在存儲過程中添加一個條件員工表 -有條件evaulate條件SQL
只有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
也就是我的Appro公司ach爲正確寫入查詢,請建議是否有更好的解決方案。我使用的DB2和Sybase
可以簡化。 –
@ Clockwork-Muse關心精心製作?即使可以以某種方式進行簡化,但其意圖已經完全清楚。 – Siyual
最後一個條件有四種可能的情況:MD + Y,MD + N,!MD + Y,!MD + Y。如果!MD,我們認爲滿足的條件(不關心Y/N),這消除了一半的表格。這隻剩下MD + Y和MD + N ......其中唯一明顯的部分是Y/N。在這一點上,檢查MD是否是輕微的,因此:'AND employeeType <>'MD'OR employeeReportableIndicator ='Y''可以簡化。 –