我们有一个表“ Job”,其中包含作业及其操作步骤的列表。我们只有工作的截止日期可用,并且需要根据交货时间提前安排每个操作的结束日期。
以下是最终结果的示例:
Job# Oper# JobDueDate OperLT OperEndDate
123 50 3/15/2019 5 3/15/2019
123 40 3/15/2019 3 3/10/2019
123 30 3/15/2019 2 3/7/2019
123 20 3/15/2019 10 3/5/2019
123 10 3/15/2019 3 2/23/2019
456 30 2/10/2019 15 2/10/2019
456 20 2/10/2019 5 1/26/2019
456 10 2/10/2019 4 1/21/2019
我使用了窗口函数Lag() Over()
,但它仅适用于下一行。
SQL语句如下:
SELECT Job#, Oper#, JobDueDate, OperLT, lag(dateadd(d, OperLT*-1, JobDueDate),1,JobDueDate) OVER (partition BY Job# ORDER BY Job#, Oper# desc) AS OperEndDate FROM Job ORDER BY Job#, Oper# desc;
如果Lag() Over()
不是正确的解决方案,有人可以指出我的代码中缺少什么或更好的方法吗?