好吧,我陷入了需要在多个行之间分配值的问题。由于我不知道具体术语,因此我将以下面的示例形式进行介绍,以便更好地理解:
假设x的值为20,我需要按降序将其分配/减去到行中。
桌子:
ID Value1 1 6 2 5 3 4 4 3 5 9
结果应类似于:(x = 20)
ID Value1 Answer 1 6 14 2 5 9 3 4 5 4 3 2 5 9 0
谁能给我一个主意,我该怎么做?
以不同的方式考虑这个问题也许更容易。您要计算的总和,value1然后从中减去该值@X。如果差异为负,则输入0。
value1
@X
0
如果您使用的是SQL Server 2012,则您具有内置的累计总和。您可以这样做:
select id, value1, (case when @X - cumvalue1 < 0 then 0 else @X - cumvalue1 end) as answer from (select id, value1, sum(value1) over (order by id) as cumvalue1 from table t ) t;
如果您没有累积总和,则可以使用子查询来代替:
select id, value1, (case when @X - cumvalue1 < 0 then 0 else @X - cumvalue1 end) as answer from (select id, value1, (select sum(value1) from table t2 where t2.id <= t.id ) as cumvalue1 from table t ) t;