SQL Server Reporting Services 在聚合数据上运行总计

Posted

技术标签:

【中文标题】SQL Server Reporting Services 在聚合数据上运行总计【英文标题】:SQL Server Reporting Services Running Total Over Aggregated Data 【发布时间】:2012-11-09 16:45:45 【问题描述】:

大家, 在 s-s-rS 中,我们有 2 列,如下所示。

销售 |运行销售 5.00 | 5.00 3.00 | 8.00 1.00 | 9.00

区别在于第一列(销售额)是一个分组行,因此要获得每行销售额的总计,我们使用 =Sum(Fields!Sales.Value)。

当我尝试使用运行价值来获得运行销售总额时,就会出现问题。它给了我聚合函数只能用于页眉和页脚的 s-s-rS 错误。在这种情况下,将总数放在页脚中是没有意义的。有谁知道这个问题的解决方案/解决方法。

谢谢。

【问题讨论】:

我不完全了解您要做什么以及遇到问题的地方。你有什么数据,你想让它看起来像什么? 对不清楚的地方表示歉意。我拥有的是第一列(销售)。我正在尝试使用运行值函数获取第二列,但给出了我描述的错误。 你使用的运行值公式是什么? 我已经尝试了几个。 =RunningValue(Fields!Sales.Value,Sum, Nothing) 和 =RunningValue(Fields!Sales.Value,Sum, "NameOfMyGrouping") 嗯,应该可以。您得到的完整错误是“聚合函数只能用于页眉和页脚中包含的报表项”吗?如果是这样,您是否引用了报告项而不是字段? 【参考方案1】:

我遇到了同样的问题;这是我解决它的方法。

所以这里是如何对本身是求和函数的列进行小计。 s-s-rS 2005 不允许您聚合聚合函数。例如,显示运行总计的列的总计,在每日库存余额计算中很有用。 将以下代码添加到报表报告 > 属性

Dim public totalBalance As Decimal 
Public Function AddTotal(ByVal balance As Decimal) AS Decimal totalBalance = totalBalance + balance return balance 
End Function 
Public Function GetTotal() return totalBalance 
End Function

此代码添加了两个变量:totalbalance 和 cnt 作为十进制数。还有两个函数AddTotalGetTotalAddTotal 允许将行中的项目相加,在值单元格中使用如下;

=RunningTotal(Fields!ColumnName.Value,sum,nothing) 
with
=Code.AddTotal(RunningTotal(Fields!ColumnName.Value,sum,nothing))

在整个单元格中,您无法简单地使用它

=sum(RunningTotal(Fields!ColumnName.Value,sum,nothing))
use instead
=Code.GetTotal()

如果您需要对多个字段的总和求和,只需添加更多变量和公共函数。

http://blog.wingateuk.com/2011/09/s-s-rs-aggregate-of-aggregate.html

【讨论】:

以上是关于SQL Server Reporting Services 在聚合数据上运行总计的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2012 安装 Reporting Services 目录错误

向 SQL Server Reporting Services 报表添加交替行颜色

Reporting Services SQL Server 2005 文件共享错误

SQL Server Reporting Services显示XML文档错误中禁止的DTD

SQL Server Reporting Services 2005 超链接值?

如何在 SQL Server Reporting Services 2008 中复制报表