需要添加两列,其中一列是使用行上的转发器显示的上一行

时间:2014-05-20 11:55:25

标签: sql-server reporting-services

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

请帮我解决如何制作.. 我有两个选项可以在SSRS中编辑它,也可以在数据集生成的过程中编辑它。

2 个答案:

答案 0 :(得分:0)

"对角线添加"是一个有趣的术语,通常被称为"累积和"。您可以在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(特别是)中的表是无序集。所以没有&#34;之前的概念&#34;除非列指定了排序。

答案 1 :(得分:0)

至于我,使用连接而不是子查询会更好,但是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