Sql server 需要添加两列,其中一列来自使用“行上的转发器”显示的前一行

Sql server 需要添加两列,其中一列来自使用“行上的转发器”显示的前一行,sql-server,reporting-services,Sql Server,Reporting Services,我有两列A和B,两列都在计算中,我需要在对角线加法的基础上计算B。B1=A1,B2=B1+A2,B3=B2+A3。等等 请帮助我如何创建。。 我有两个选择,要么在SSRS中编辑,要么在数据集生成的过程中编辑。对角加法是一个有趣的术语,通常称为累积和。您可以在SQL Server 2012及以后的版本中通过执行以下操作进行此计算: select A, sum(A) over (order by id) from table t; 在早期版本中: select A, (select

我有两列A和B,两列都在计算中,我需要在对角线加法的基础上计算B。B1=A1,B2=B1+A2,B3=B2+A3。等等

请帮助我如何创建。。
我有两个选择,要么在SSRS中编辑,要么在数据集生成的过程中编辑。

对角加法是一个有趣的术语,通常称为累积和。您可以在SQL Server 2012及以后的版本中通过执行以下操作进行此计算:

select A, sum(A) over (order by id)
from table t;
在早期版本中:

select A,
       (select sum(t2.A) from table t2 where t2.id <= t.id) as B
from table t;

请注意,它们都使用一个名为id的列。这可以是指定表中行的顺序的任何列。SQL中的表通常是无序集,特别是SQL Server中的表。因此,除非列指定了顺序,否则没有前一行的概念。

对于我来说,最好使用连接而不是子查询,但Gordon Linoff版本也会很好地工作

SELECT a1.SumAmt as A, SUM(b1.SumAmt) as B
FROM Table1 a1
INNER JOIN Table1 b1 on a1.ID >= b1.ID
GROUP BY a1.ID, a1.SumAmt
ORDER BY a1.ID

谢谢,这确实有效/但当我们指定了表时,这很容易使用,如果我必须引用使用许多查询和联接派生的列,该怎么办。我知道一种方法是我必须使用一张临时桌子,但还有其他方法吗?@user3640136。您可以使用CTE定义可以多次使用的表别名。或者,升级到最新版本的SQL Server并使用内置的累积和语法。