基于 ID 和条件的两个日期之间的差异

Difference between two dates based on ID and condition

我必须为每个唯一 ID(发货编号)计算两行之间的日期差异,其中第一次被归类为(取货),最后一次被归类为(送货)。本质上,有没有一种方法可以在 Quicksight(或 SQL)中创建一个计算字段或等效字段,它执行以下操作(其中发货编号、事件类型和事件时间是列名称):

for each unique shipment-number find the date difference (event-time) between event-type == delivered and event-type == pickup

假设有四行表示特定的货件编号:

shipment-number event-type event-type
001 pickup 11.01.2021
001 in-transit 12.01.2021
001 arrived-destination 13.01.2021
001 delivered 15.01.2021

那么预期结果将是 2021 年 1 月 11 日(取件)和 2021 年 1 月 15 日(送达)的差值,即 4 天。

我试过使用 datediff,但是,这需要两个日期字段。是否可以通过按事件类型为每个唯一装运编号提取事件时间来创建两个字段 (firstEvent) 和 (lastEvent)?但是,我不确定是否这样做。

任何 help/advice 都会有很大帮助。

您可以按如下方式使用条件聚合:

select shipment_number,
       datediff(day, min(case when event_type = 'pickup' then event_date end) 
       - max(case when event_type = 'delivered' then event_date end)  ) as diff
  from your_table
group by shipment_number