【问题标题】:SSRS summing values from multiple data sets and sub reports来自多个数据集和子报告的 SSRS 求和值
【发布时间】:2019-05-07 08:21:04
【问题描述】:

我的 SSRS 主报告中有两个数据集和一个子报告。

我需要创建第三个 - 总计表或矩阵,它从每个数据集和子报表中返回一个字段。

看起来像这样(开始)

首先,我构建了一个表并添加了一个列来使用以下值进行测试。 (这在总行中)每个元素单独在各自的行中。

=ReportItems!tps_actual4.Value + ReportItems!Textbox1230.Value

tps_actual4 来自一个数据集。 Textbox1230 来自不同的数据集。

出现的第一个错误是:

"The value for the DataSetName property is missing"

如果我将代码更改为类似这样的内容

=First(ReportItems!tps_actual4.Value, "Master_Data_Set") + First(ReportItems!Textbox1230.Value, "Secondary_Data")

我收到另一个错误,内容如下:

The value expression for the textrun ''.. uses an aggregate function on a report item. Aggregate functions can be used only on report items contained in page headers and footers. 

我们在这里没有引用一个数据集。我不知道如何解决这个问题。

第二个问题是Textbox1230的情况,因为有六行数据,所以返回了6次。如何在我的逻辑中指定 case 语句何时添加 Textbox1230

最后,我什至不确定如何引用子报表,因为我们还需要访问子报表中的两个字段。

谢谢。

Grand Total         column1 column2  
Dataset1 Values        a      x  
Dataset2 Values        b      y       … and so on
Subreport Values       c      x  
Grand Total Sums    a+b+c   x+y+z    

以上是一个excel样本,希望它有助于理解——列将继续第一行数据来自一个数据集。来自另一个等的第二个和总计将这些值加在一起以获得总计。

【问题讨论】:

  • 您的查询可以为其他 2 份报告提供支持。在 sql server 端(作为新查询或 proc)建立聚合,但总和。您将不得不利用临时表或变量来完成此操作。然后使用 ssrs 作为渲染工具来锚定数据。如果您在每个 tablix 上计算数据,此解决方案将不起作用。
  • @junketsu 我考虑过这一点,但是我们获得这些字段的复杂性非常耗时,我不想重复使用预先存在的 3 个查询的第三个查询并重新计算所有数据。 (资源和时间效率很低)
  • 因为您已经准备好查看每个 tablix、文本框。并拥有如此复杂的指标。与让另一个业务用户加入您的团队相比,您最好制作一个 proc 并做一次腿部工作,这样做会给出相同报告的味道(但没有值
  • 我很想用 SQL 构建它,但至少对于这个项目来说,复杂性如此多样化,每个 tablix 的代码非常复杂,绝对不是理想的选择。虽然可能创建一个调用其他程序并返回数据并更新本地诱惑表的过程可能是一个好主意(再次运行和重新运行复杂的脚本,我担心会导致很多缓慢/命中系统)。

标签: sql reporting-services dataset ssrs-2008 ssrs-2012


【解决方案1】:

您唯一可以做的是捕获来自不同Tablix的所有总数,并在单独的Tablix中汇总这些值。但是您不能从子报表中获取值,这仅适用于实际报表中的数据集。如果您还想对子报表值求和,我建议您使用@junketsu 的解决方案。

假设您的报告中有 2 个数据集,每个数据集都是另一个 tablix 的来源。现在你需要在每个 tablix 中添加一个总数

'Tablix 1 total
=Sum(Fields!TestValue.Value, "Dataset1")  'This expression is in Textbox1

'Tablix 2 total
=Sum(Fields!TestValue2.Value, "Dataset2")  'This expression is in Textbox2

现在添加第三个taxix。在第一个文本框中写入以下表达式:

=ReportItems!Textbox1.Value  

在第二个文本框中:

=ReportItems!Textbox2.Value 

在第三个文本框中:

=ReportItems!Textbox1.Value + ReportItems!Textbox2.Value

zhid tablix的结果将如下所示:

Dataset1 Total Value     11111
Dataset2 Total Value     22222
Overall Total            33333

【讨论】:

  • 我发现这个解决方法,似乎不必要地笨重。我知道每个数据集都必须存在一个范围。但我无法想象在构建 SSRS 表的世界中没有人尝试创建“总计”或汇总类型的数据集。
猜你喜欢
  • 2017-03-16
  • 1970-01-01
  • 1970-01-01
  • 2018-11-25
  • 2019-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-09
相关资源
最近更新 更多