基于 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
我必须为每个唯一 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