【问题标题】:Nested Case/If Else statements in where clausewhere 子句中的嵌套 Case/If Else 语句
【发布时间】:2014-08-07 23:33:29
【问题描述】:

我正在尝试为我在案例陈述中进行的计算提供替代方案。目前它正在查看“close_date”以满足等式。我希望它能够先查看“close_date”,但如果它为空,则使用 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 语句?

【问题讨论】:

标签: sql oracle if-statement case


【解决方案1】:

你可以使用 Coalesce

http://msdn.microsoft.com/en-us/library/ms190349.aspx

Coalesce 检查第一个参数; if null - 它使用第二个参数,否则它使用第一个。

COALESCE(fourthlevel.close_date, SYSDATE)

这会检查 fourthlevel.close_date,然后在 close_date 为空时使用 SYSDATE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多