我在一些 SQL 逻辑上有点挣扎,更不用说。
数据集示例
wid CCVnr Amount Reference Seq Month ColumIwant=PreviousAmount
11 15946 20 50 1 1/1/2013 NULL
12 15946 20 50 2 1/2/2013 NULL
13 15946 20 50 3 1/3/2013 NULL
14 15946 20 50 4 1/4/2013 NULL
15 15946 20 50 5 1/5/2013 NULL
16 15946 20 50 6 1/6/2013 NULL
35 15946 20 50 1 1/1/2013 NULL
36 15946 10 50 2 1/2/2013 20
37 15946 10 50 3 1/3/2013 20
38 15946 10 50 4 1/4/2013 20
39 15946 10 50 5 1/5/2013 20
40 15946 10 50 6 1/6/2013 20
88 15946 10 50 1 1/1/2013 20
89 15946 20 50 2 1/2/2013 NULL
90 15946 25 50 3 1/3/2013 10
91 15946 25 50 4 1/4/2013 10
92 15946 25 50 5 1/5/2013 10
93 15946 25 50 6 1/6/2013 10
我拥有的前 5 列,我想“计算”最后一列:PreviousAmount。对我而言,问题是每次(重新)加载所有 6 个月时,因此仅查看“更改”值是不够的,您还必须考虑到历史记录。
(我首先有一段 CTE 代码将一行与下一行进行比较,但像这样我错过了历史......)
这里的情况是:客户有一个他想每月支付的金额,他可以更改:在这种情况下,将其从 20 更改为 10 到 25。
我已经上传了一个 CSV 文件或我正在使用的数据集: https ://mega.co.nz/#!oZhC0RxB!CzzMx3Yr6Kx1_1N9scuNqwJnqoZDGUXte47iOPkLG-E
我们使用 SQL Server 2008 R2。表中有 20M 行这样的行。所以也许游标不是最好的选择(?)
非常感谢您的帮助!大号
更新:我添加了一个 wid 列,因为原始数据集也包含一个 wid 列。@Mark Bannister逻辑是查看“金额”,当某个月份的金额被用户更改时:*接下来的所有月份都会在“新金额”时更新 *我们计算上一个金额,即 = 金额是以前
@ Love2Learn也感谢您的评论。还有更多列,但您必须知道在 stackoverflow 代码块中添加更多列并不容易。因此,我还上传了一个 CSV 文件,您可以从中找到链接。我确实添加了一个相关的列是“wid”。
通常应该有足够的信息和列来计算前一行。提前致谢!