sql - 如何将同一表中不同日期的行连接起来
问题描述
我只是 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
任何帮助深表感谢!
解决方案
使用lead()
:
select t1.*,
lead(delivery_date) over (partition by sku order by delivery_date) as next_delivery_date
from table1 t1
推荐阅读
- mysql - 最后一个点之后的子字符串
- python - AttributeError:模块“sklearn”没有属性“model_selection”
- dart - 在 Flutter 中,在 pubspec.yaml 文件中添加包的最佳方法是什么?
- angular - Angular 6 高亮问题
- php - PHP 货币格式
- ios - 动画后更改 ViewController
- ios - 应用重启后未调用 iOS OneSignal handleNotificationReceived 回调
- mongodb - 如何对具有特定字段日期mongodb的记录进行排序?
- npm - 持续的笑话错误:需要 Babel“^7.0.0-0”,但加载了“6.26.3”
- html - HTML 导航栏标题宽度