Sql server SQL Server-根据前一行的动态数量计算总和
我有那种数据集Sql server SQL Server-根据前一行的动态数量计算总和,sql-server,optimization,sum,Sql Server,Optimization,Sum,我有那种数据集 ID A B ----------- 1 5 20 2 4 20 3 14 20 4 4 20 5 20 30 6 15 30 7 10 30 8 6 30 9 4 30 10 10 30 我的任务是使用ID顺序对A列中的值求和,直到不大于B列中的值为止。(每次B中的值不同时,我开始新的计算) 我需要用两种方法来做: 第一: 如果一列中的值的运行总和大于B列中的值,我需要将一列中的当前值拆分为两行 在第
ID A B
-----------
1 5 20
2 4 20
3 14 20
4 4 20
5 20 30
6 15 30
7 10 30
8 6 30
9 4 30
10 10 30
我的任务是使用ID顺序对A列中的值求和,直到不大于B列中的值为止。(每次B中的值不同时,我开始新的计算)
我需要用两种方法来做:
第一:
如果一列中的值的运行总和大于B列中的值,我需要将一列中的当前值拆分为两行
在第一行中,它将是相同的ID,一个值将是B列和上一个总和(A)之间的差值
在第二行中,相同ID将显示原始A值与前一行值之间的差异
看看这个例子:
ID A B SumA SumA_ID
------------------------
1 5 20 20 1
2 4 20 20 1
3 11 20 20 1
3 3 20 7 2
4 4 20 7 2
5 20 30 30 1
6 10 30 30 1
6 5 30 30 2
7 10 30 30 2
8 6 30 30 2
9 4 30 30 2
10 5 30 30 2
10 5 30 5 3
第二:
每次当前和A大于当前值B时,我开始再次求和
ID A B SumA SumA_ID
------------------------
1 5 20 9 1
2 4 20 9 1
3 14 20 19 2
4 4 20 19 2
5 20 30 20 1
6 15 30 25 2
7 10 30 25 2
8 6 30 20 3
9 4 30 20 3
10 10 30 20 3
由于数据集很大,我不喜欢使用循环
您能推荐在SQL Server中执行此操作的最佳方法吗
谢谢格式化您的示例数据将非常有用。我希望现在更好。