首页 > 解决方案 > 基于 ID 和条件的两个日期之间的差异

问题描述

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

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

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

物流编号 事件类型 事件类型
001 捡起 11.01.2021
001 在途中 12.01.2021
001 到达目的地 13.01.2021
001 发表 15.01.2021

那么预期的结果将是与 11.01.2021(取货)和 15.01.2021(交付)的差异,即 4 天。

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

任何帮助/建议都会有很大帮助。

标签: sqlamazon-web-servicesamazon-athenaamazon-quicksight

解决方案


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

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

推荐阅读