微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在SQL Server中获得累积总和Z = Z + A + B-C

如何解决如何在SQL Server中获得累积总和Z = Z + A + B-C

我想在sql的表(Commul_table)中创建累积总和,例如 Z = Z +(A + B-C)

Commul_table i want compute value of Z

解决方法

在这种情况下,您可以将analytic functionrows 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可以重复,请说明您想要的结果。上面的内容还假设abc从未为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 举报,一经查实,本站将立刻删除。