【问题标题】:How to reference calculated fields in a report using SQL Server Reporting Service如何使用 SQL Server Reporting Service 引用报表中的计算字段
【发布时间】:2013-03-08 13:33:16
【问题描述】:

我正在使用 SQL Server2005 报告服务编写报告。我有一个提供数据集的存储过程。

数据在报告中被分成多个组。每个组页脚都有一个函数(表达式),它是根据表中的字段计算的平均值(让我们将此值称为 X)。在数据的末尾,我希望报告有一个页脚,其中包括所有 X 值的总和。

请注意,我不想要列中所有字段的总和,但我想要组页脚中所有计算值的总和。这在 Excel 中很容易做到

这个问题看起来很简单,但我正在努力寻找答案。我会很感激任何帮助,谢谢。

【问题讨论】:

  • 您想在您的组的AVG 上执行SUM 吗?这是聚合的聚合,SSRS 2005 不直接支持。SSRS 2008R2 支持。

标签: sql-server sql-server-2005 reportingservices-2005


【解决方案1】:

在搜索 MS 论坛并反复试验后,我发现这是此版本 BIDS 的限制。以下是解决方法:

1) 升级到更高版本的 BIDS。我没有调查我的问题是否会在以后的版本中得到解决,因为此时升级不是一个选项。

2) 向数据集添加一个新的计算字段。这不起作用,因为对于我的应用程序,计算字段需要不支持的聚合函数。

3) 最好的解决方案是在报表属性中添加一个 VB 代码函数,如下所示:

Dim Shared totalBalance
Dim Shared Cnt AS Integer

Public  Function AddTotal(ByVal balance ) 
                totalBalance = totalBalance + balance
                Cnt=Cnt+1
                return balance

End Function

Public Function GetTotal() 
                return totalBalance
End Function   

然后将组页脚中的代码引用为:=Code.AddTotal(Avg(Fields!Amount.Value))

并且从报告页脚为:

=Code.GetTotal()

此解决方案在 Group Footer 中运行良好,但在报告末尾的 Report Footer 中,变量 CnttotalBalance 被重置为 0。

【讨论】:

    猜你喜欢
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    相关资源
    最近更新 更多