【问题标题】:sql nested case statementssql嵌套case语句
【发布时间】:2011-03-12 09:28:52
【问题描述】:

有人知道这个嵌套选择语句有什么问题吗?它抱怨缺少),但我不明白为什么它不起作用(我已经省略了声明的其他部分)

Select
(CASE WHEN REQUESTS.grade_id = 1 THEN
      (CASE WHEN  ((date_completed-date_submitted)*24*60)<=30 THEN 'Yes'
           ELSE 'No'
      END)
 ELSE CASE WHEN REQUESTS.grade_id = 2 THEN
      (CASE ((date_completed-date_submitted)*24*60) <=120 THEN 'Yes'
           ELSE 'No'
      END) 
 ELSE CASE WHEN REQUESTS.grade_id = 3 THEN
     (CASE ((date_completed-date_submitted)*24*60)<=14400 THEN 'Yes'
          ELSE 'No'
     END)
 END)in_SLA

如果我只是这样做

    Select
       (CASE WHEN REQUESTS.grade_id = 1 THEN
           (CASE WHEN  ((date_completed-date_submitted)*24*60)<=30 THEN 'Yes'
               ELSE 'No'
            END)
       END) in_sla

效果很好!

非常感谢任何帮助

M

对不起,我错过了嵌套案例中的时间

【问题讨论】:

    标签: sql oracle case


    【解决方案1】:

    应该是:

    Select
    (CASE WHEN REQUESTS.grade_id = 1 THEN
          (CASE WHEN  ((date_completed-date_submitted)*24*60)<=30 THEN 'Yes'
               ELSE 'No'
          END)
          WHEN REQUESTS.grade_id = 2 THEN
          (CASE ((date_completed-date_submitted)*24*60) <=120 THEN 'Yes'
               ELSE 'No'
          END) 
          WHEN REQUESTS.grade_id = 3 THEN
         (CASE ((date_completed-date_submitted)*24*60)<=14400 THEN 'Yes'
              ELSE 'No'
         END)
     END)in_SLA
    

    即每个案例都只是“WHEN”而不是“ELSE CASE WHEN”。

    我很想简化为:

    Select
    CASE WHEN (REQUESTS.grade_id = 1 AND (date_completed-date_submitted)*24*60 <= 30)
           OR (REQUESTS.grade_id = 2 AND (date_completed-date_submitted)*24*60 <=120)
           OR (REQUESTS.grade_id = 3 AND (date_completed-date_submitted)*24*60 <=14400)
         THEN 'Yes'
         ELSE 'No'
     END in_SLA
    

    【讨论】:

    • 或者更好:CASE REQUESTS.grade_id WHEN 1 THEN ... WHEN 2 THEN ... WHEN 3 THEN ... END
    • 谢谢,但这也不起作用,Else Case When bit 来自我乱搞tring以使其工作。还有其他想法吗?
    • 我错过了嵌套案例中的时间!!抱歉迟到了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多