Обновить поля в таблице на основе предыдущих записей полей - PullRequest
0 голосов
/ 18 июня 2019

У меня есть таблица записей для периодов оплаты с полями WeekStart и WeekEnd, заполненными за каждый финансовый год.В моем приложении пользователь должен иметь возможность обновить первую дату WeekEnd для данного финансового года, а это, в свою очередь, должно обновить дату WeekStart последующих записей, добавив 1 день к предыдущей WeekEnd дате и к той же записи WeekEnd, добавив 13 дней кновая дата WeekStart.

Это часть хранимой процедуры, написанной в SQL Server 2016.

UPDATE  [dbo].[staffing_BiweeklyPPCopy]  
SET 
[WeekStart] = DATEADD(DD, 1, LAG([WeekEnd], 1) OVER (ORDER BY [ID])), 
[WeekEnd] = DATEADD(DD, 14, LAG([WeekEnd], 1) OVER (ORDER BY [ID]))
WHERE
[FiscalYear] = @fiscalyear

Исходное содержимое таблицы показано ниже ...

ID  WeekStart   WeekEnd
163 2018-10-01  2018-10-13
164 2018-10-14  2018-10-27
165 2018-10-28  2018-11-10
166 2018-11-11  2018-11-24
167 2018-11-25  2018-12-08
168 2018-12-09  2018-12-22
169 2018-12-23  2019-01-05
170 2019-01-06  2019-01-19
171 2019-01-20  2019-02-02
172 2019-02-03  2019-02-16
173 2019-02-17  2019-03-02
174 2019-03-03  2019-03-16
175 2019-03-17  2019-03-30
176 2019-03-31  2019-04-13
177 2019-04-14  2019-04-27
178 2019-04-28  2019-05-11
179 2019-05-12  2019-05-25
180 2019-05-26  2019-06-08
181 2019-06-09  2019-06-22
182 2019-06-23  2019-07-06
183 2019-07-07  2019-07-20
184 2019-07-21  2019-08-03
185 2019-08-04  2019-08-17
186 2019-08-18  2019-08-31
187 2019-09-01  2019-09-14
188 2019-09-15  2019-09-28
189 2019-09-29  2019-09-30

Например, если пользователь обновляет дату выходных для идентификатора записи 163 до «2018-10-14», таблица будет обновляться следующим образом.

ID  WeekStart   WeekEnd
163 2018-10-01  2018-10-14
164 2018-10-15  2018-10-28
165 2018-10-29  2018-11-11
166 2018-11-12  2018-11-25
167 2018-11-26  2018-12-09
.
.
.
189 2019-09-30  2019-09-30

Заранее благодарим.

...