根据以前的字段记录更新表中的字段

时间:2019-06-18 19:13:30

标签: sql-server-2012

我有一个工资期记录表,其中每个会计年度都填充了WeekStart和WeekEnd字段。在我的应用程序中,用户应该能够更新给定会计年度的第一个Weekend日期,然后应该通过将上一个WeekEnd日期添加1天来更新后续记录WeekStart日期,对于相同记录的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

例如,如果用户将记录ID 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

谢谢。

0 个答案:

没有答案