SQL使用以前的记录值

时间:2017-12-13 17:24:35

标签: sql sql-server sql-server-2008

我在更新前有如下数据。我试图得到一个看起来像" After Update"图片。突出显示的单元格

1 - 我需要使用下一行的开始日期填充上一行的每个结束日期列。我正在使用没有延迟和引导功能的SQL Server 2008。

2 - 还需要按如下方式填写当前的GOLD行

CarryoverFrom = the ID of the previous not immediate PREMIUM row
CarryoverFrom2 = the ID of the immediate previous PREMIUM row 
CarryoverAppliedTo = Sum of the Carryover amount of the previous PREMIUM rows

**请注意,每个GOLD行仅处理在GOLD行之后发生的先前PREMIUM行。例如,ID 5行仅处理PREMIUM行ID 4而不处理ID 2和2中的PREMIUM行

- 更新前 enter image description here

- 更新后 enter image description here

1 个答案:

答案 0 :(得分:0)

如果没有LAGLEAD,您可以按行号自行加入表格。因此,对于第1项,它将是:

UPDATE A SET [End Date] = NextRecords.[Start Date] FROM 
(SELECT *, ROW_NUMBER() OVER (ORDER BY [Start Date]) rownum FROM [table]) A
INNER JOIN (SELECT *, ROW_NUMBER() OVER (ORDER BY [Start Date]) rownum FROM [table]) NextRecords 
ON A.rownum + 1 = NextRecords.rownum

第2项将是类似的,但更详细一点。