Расчет по обратному расписанию на основе вычисленного столбца предыдущей строки - PullRequest
0 голосов
/ 01 декабря 2018

У нас есть таблица «Работа» со списком работ и этапами их работы.У нас есть только дата выполнения задания, и нам нужно будет планировать дату окончания каждой операции в зависимости от времени выполнения.

Вот пример того, как должны выглядеть конечные результаты:

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() не является правильным решением?

...