如何在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;