首页 > 解决方案 > 如何将同一表中不同日期的行连接起来

问题描述

我只是 SQL 的初学者,遇到以下问题:

我有一个包含 SKU 订单列表的表格,其中每一行显示 SKU、交货日期和订单数量。我想以某种方式重新排列表格,使行不仅包含该给定数量的交货日期,还包含未来发生的以下交货日期。

该表目前如下所示:

SKU/  DELIVERY_DATE/ QUANTITY_ORDERED 
1.SKUx       14/3/2020   200
2.SKUx         19/3/2020    400
3.SKUx          27/3/2020   550

我想要实现的是:

SKU/  DELIVERY_DATE/ **NEXT_DELIVERY_DATE**/ QUANTITY_ORDERED <br/>
1.SKUx         14/3/2020 **19/3/2020**  200
2.SKUx         19/3/2020  **27/3/2020**  400
3.SKUx          27/3/2020  **NULL** 550

请记住,如上所示,两次交付之间的天数会有所不同(14/3-19/3 之间为 5 天,27/3-19/3 之间为 8 天),因此无法选择一个绝对值来使该列重新出现两次,例如

SELECT SKU, DELIVERY_DATE,
       DELIVERY_DATE + 5 AS NEXT_DELIVERY_DATE,
       QUANTITY_ORDERED
FROM TABLE1

任何帮助深表感谢!

标签: sqloracle

解决方案


使用lead()

select t1.*,
       lead(delivery_date) over (partition by sku order by delivery_date) as next_delivery_date
from table1 t1

推荐阅读