我有下表,
ID | 开始日期 | 阶段 |
---|---|---|
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 需要找到达到最终阶段的总天数。如果 ID 没有 Final_Stage,则结果将为“0”。如果某个 ID 有可用的 Final Stage,则需要将 Final_Stage 与 Initial_Stage 相差天数"
ID | Start_to_Final_Stage_Days |
---|---|
56 | 0 |
77 | 1 |
答案 0 :(得分:0)
您可以在条件中使用 MIN[IMUM] 聚合,因为 Final_Stage
在各个阶段之间按字母顺序排在最前面使用 EXTRACT()
函数将间隔天到秒转换为整数,例如
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 |