特定输出的 SQL 查询

问题描述 投票:0回答:1

我有一个如下所示的输入表

加载_日期 预计日期 总需求 滚动消费需求
2020-01-01 2020-01-01 100 60
2020-01-01 2020-01-02 150 75
2020-01-01 2020-01-03 200 100
2020-01-01 2020-01-04 300 120
2020-01-01 2020-01-05 400 160

我的输出将是这样的:

加载_日期 预计日期 总需求 滚动消费需求 预计完成日期
2020-01-01 2020-01-01 100 60 2020-01-03
2020-01-01 2020-01-02 150 75 2020-01-05
2020-01-01 2020-01-03 200 100 ---
2020-01-01 2020-01-04 300 120 ---
2020-01-01 2020-01-05 400 160 ---

您能帮我进行 SQL 查询吗?我尝试在 Databricks SQL 中编写查询,但没有得到此输出。其实这只是我整个需求的一小部分。

这里的逻辑是计算完成预计日期列,每当滚动消耗需求将超过特定预计日期的总需求时,它将返回该滚动消耗需求对应的预计日期。

如上表所示,预计日期 2020-01-01 的总需求为 100。但滚动消耗的需求在预计日期 2020-01-03 达到 100。因此,对于第一行,它将返回完成的预计日期为 2020-01-03。

与预计日期 2020-01-02 类似,滚动消耗的需求超过 2020-01-05 的总需求。由于 160 > 150。因此完成的预计日期将为 2020-01-05。

sql function join window common-table-expression
1个回答
0
投票
SELECT a.*, MIN(b.projected_date) as  [Finished projected date]
FROM InputTable a
LEFT JOIN InputTable b ON a.[total demand] <= b.[rolling consumed demand]
GROUP BY a.Load_date, a.Projected_date, a.[total demand], a.[rolling consumed demand] 
© www.soinside.com 2019 - 2024. All rights reserved.