【问题标题】:Oracle - sql - date difference - as per column valueOracle - sql - 日期差异 - 按列值
【发布时间】:2021-09-04 21:19:19
【问题描述】:

我有下表,

ID start_date Stage
56 07-JUN-21 03.13.44.4490000 Initial_Stage
77 08-JUN-21 06.28.14.0000000 Initial_Stage
77 08-JUN-21 07.28.14.0000000 Middle_Stage
77 09-JUN-21 06.28.14.0000000 Final_Stage

需要的输出:

根据 ID 需要找到到达 Final 阶段的总天数。如果 ID 没有 Final_Stage,则结果将为“0”。如果某个 ID 有 Final Stage 可用,则需要在 Final_Stage 和 Initial_Stage 之间区分天数"

ID Start_to_Final_Stage_Days
56 0
77 1

【问题讨论】:

    标签: sql oracle group-by


    【解决方案1】:

    您可以在条件句中使用 MIN[IMUM] 聚合,因为 Final_Stage 与 @ 一起按字母顺序在各个阶段中排在最前面987654324@函数为了将interval day to second转换成整数比如

    SELECT ID, 
           DECODE( MIN(stage), 'Final_Stage', 
                   EXTRACT(DAY FROM MIN( CASE WHEN stage = 'Final_Stage' THEN start_date END ) -
                                    MIN( CASE WHEN stage = 'Initial_Stage' THEN start_date END) ),0)
               AS "Start_to_Final_Stage_Days"                               
      FROM t
     GROUP BY ID 
     ORDER BY ID;
    
    ID Start_to_Final_Stage_Days
    56 0
    77 1

    Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-17
      • 1970-01-01
      • 2012-12-22
      • 1970-01-01
      • 2021-07-24
      • 2015-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多