我正在努力避免在我的项目中使用游标( Server 2012)。我需要准备查询,它计算反求(用减法)运行总数。
让我举例说明一下。
我有以下数据集:
Id AppId CaseId Amount Balance
1 2 123 16.48 43.29
2 2 123 5.01 43.29
3 2 123 2.25 43.29
4 4 123 16.48 43.29
5 4 123 5.01 43.29
6 4 123 2.25 43.29
7 10 789 2 10
8 11 789 4 10我需要得到以下数据:
Id AppId CaseId Amount Balance Total
1 2 123 16.48 43.29 25.81
2 2 123 5.01 43.29 20.8
3 2 123 2.25 43.29 18.55
4 4 123 16.48 43.29 2.07
5 4 123 5.01 43.29 -2.94
6 4 123 2.25 43.29 -5.19
7 10 789 2 10 8
8 11 789 4 10 4我试图在()上使用滞后和SUM(),但我不知道如何正确地使用它。
你能帮我一下吗?
发布于 2017-03-16 15:29:33
您可以使用MIN() OVER()和SUM() OVER()的组合:
SELECT *,
MIN(Balance) OVER(PARTITION BY CaseId) -
SUM(Amount) OVER(PARTITION BY CaseId ORDER BY Id) Total
FROM dbo.YourTable
ORDER BY Id;它的这是一个演示。
https://dba.stackexchange.com/questions/167363
复制相似问题