我正在尝试为我在case语句中进行的计算提供替代方案。目前,它正在查看'close_date'以满足该方程。我希望它能够首先查看'close_date',但如果它为null,则使用SYSDATE。
我的代码如下: SELECT CASE
WHEN fourthlevel.case_type IN
('Complaint')
THEN
(SELECT COUNT (*)
FROM work_days1
WHERE work_days1.business_date >
fourthlevel.correspond_date
AND work_days1.business_date <=
fourthlevel.close_date)
WHEN fourthlevel.case_type IN ('Enquiry')
THEN
(SELECT COUNT (*)
FROM work_days1
WHERE work_days1.business_date >
fourthlevel.create_date
AND work_days1.business_date <=
fourthlevel.close_date)
END
AS sla_days
FROM fourthlevel
那么我是在where子句中使用嵌套的if-else语句,还是使用另一个case语句?
可以使用Coalesce
http://msdn.microsoft.com/en-us/library/ms190349.aspxCoalesce检查第一个参数;如果为空,则使用第二个参数,否则使用第一个参数。
COALESCE(fourthlevel.close_date, SYSDATE)
如果close_date为null,则检查fourthlevel.close_date
,然后使用SYSDATE
。