【问题标题】:SSRS Expression - Aggregating variablesSSRS 表达式 - 聚合变量
【发布时间】:2012-09-06 02:07:42
【问题描述】:

我正在构建一个报告,我正在尝试为变量(而不是参数)编写表达式。我计划创建多个变量,每个变量都引用来自不同数据集的金额的 SUM(SUM())。然后,我计划在单个文本框中引用这些变量中的每一个来进行计算。这是为了规避 SSRS 在单个 tablix/matrix 中使用多个数据集的限制。

我需要一些语法方面的帮助。当我单独使用 SUM 时,报告运行良好,我可以毫无问题地对这些值执行计算。例如,这很好用:

变量1:

=SUM(Fields!Amount.Value, "DataSet1")

变量2:

=SUM(Fields!Amount.Value, "DataSet2")

文本框1:

=Variable1.Value - Variable2.Value

但是在尝试将其修改为以下内容时出现错误(这是我真正需要的):

变量1:

=SUM(SUM(Fields!Amount.Value, "DataSet1"))

我收到一条错误消息,提示“报表‘正文’的变量表达式使用没有范围的聚合表达式。除非报表只包含一个数据集,否则在数据区域之外使用的所有聚合都需要范围。”我有一种预感,我的语法/括号放置有问题。我尝试在最后 (SUM(SUM(Fields!Amount.Value, "DataSet1"),"DataSet1") 再次添加 ",DataSet1",但收到有关递归嵌套问题的错误。有什么建议吗?

【问题讨论】:

  • SUM(SUM()) 是什么意思?我不明白需要额外的SUM。除非你想SUM() * COUNT()??
  • 基本上,数据集从表中提取“金额”。金额(tablix 的数据)属于不同的帐户(tablix 的行),以及不同的位置(tablix 的列)。金额的总和将一些位置汇总在一起,第二个总和在 tablix 的底部提供了垂直的总和。我用于此底部水平总计行的表达式是 SUM(SUM(Fields!Amount.Value))。我需要将此值复制到另一个文本框。
  • 抱歉,我没有考虑嵌套的行/列组...

标签: reporting-services sum ssrs-2008 ssrs-expression


【解决方案1】:

我猜你在哪里分配变量,它没有这些列组的概念,所以唯一的选择是对整个数据集求和。

我认为您可以尝试以下方法之一:

  1. 从 tablix 中分配值(如果允许,您可能需要聚合然后设置变量的自定义代码)
  2. 在条件和中再次指定分组条件,如SUM(IIF(Fields!Location.Value = TheLocationValueForTheColumnYouNeed, Fields!Amount.Value, 0))

【讨论】:

  • 谢谢IC,这似乎是真的。它将所有位置加在一起,而不是区分它们。我将创建不同的文本框,而不是创建 tablix,每个文本框都包含一个带有相关位置规范的表达式。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-03
  • 1970-01-01
相关资源
最近更新 更多