如何解决如何在SQL Server中获得累积总和Z = Z + A + B-C
我想在sql的表(Commul_table)中创建累积总和,例如 Z = Z +(A + B-C)
解决方法
在这种情况下,您可以将analytic function
与rows unbounded preceding
一起使用(以获取当前行之前的总和值)
Select id,A,B,C,sum(A+B-C) over(order by Id rows unbounded preceding) as Z
From Table
,
它仍然是累计总和,只是基于对三列的计算:
sum(a+b-c) over (order by Id rows unbounded preceding)
请参见fiddle
,我要指出的是,大多数数据库不需要窗口框架子句。假设id
是唯一的:
select ct.*,sum(a + b - c) over (order by id) as z
from Commul_table;
如果id
可以重复,请说明您想要的结果。上面的内容还假设a
,b
和c
从未为NULL
。如果可以,那么您要用0
代替它们:
select ct.*,sum(coalesce(a,0) + coalesce(b,0) - coalesce(c,0)) over (order by id) as z
from Commul_table;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。