У нас есть таблица «Работа» со списком работ и этапами их работы.У нас есть только дата выполнения задания, и нам нужно будет планировать дату окончания каждой операции в зависимости от времени выполнения.
Вот пример того, как должны выглядеть конечные результаты:
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()
не является правильным решением?