簡體   English   中英

Oracle - sql - 日期差異 - 根據列值

[英]Oracle - sql - date difference - as per column value

我有下表,

ID 開始日期 階段
56 07-JUN-21 03.13.44.4490000 初期
77 08-JUN-21 06.28.14.0000000 初期
77 08-JUN-21 07.28.14.0000000 中間階段
77 09-JUN-21 06.28.14.0000000 最后階段

必填 output:

根據 ID 需要找到達到最終階段的總天數。 如果 ID 沒有 Final_Stage,則結果將為“0”。 如果某個 ID 有可用的 Final Stage,則需要將 Final_Stage 和 Initial_Stage 之間的天數相差“

ID Start_to_Final_Stage_Days
56 0
77 1個

您可以在條件中使用MIN [ IMUM ] 聚合,考慮到Final_Stage在階段中按字母順序排列在頂部以及EXTRACT() function 以便將間隔天轉換為秒integer例如

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個

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM