【问题标题】:SSRS count rows grouping on dataSSRS 计数对数据进行分组的行数
【发布时间】:2014-05-07 15:30:44
【问题描述】:

我有一份现有的 SSRS 报告,报告顶部显示了一些总体计数。报告数据如下:

column1    column2
A1         true
-          true
B5         false
A1         true
-          false
C3         false

我需要的是 column1 中项目的不同计数,但包括所有带有“-”的行。因此,此示例数据的结果应为 5,将“A1”行计为 1。问题是这需要在报表本身的表达式或某种方法中完成。我无法更改数据集查询。

我尝试过:=COUNTDISTINCT(Fields!column1.Value) 但这会将“-”行计为一个。

是否可以添加另一个数据集并为该数据集开发一个查询来查询现有数据集?不确定是否可以这样做。

【问题讨论】:

  • 如果您添加像- false 这样的另一行,这对总计数有何影响?只是想了解应该如何计算多个 - 行。
  • 这将使计数增加 1。所有“-”行都计为唯一行,其余行应分组。

标签: reporting-services ssrs-2008 ssrs-2008-r2 ssrs-grouping


【解决方案1】:

这对我来说没问题:

=CountDistinct(IIf(Fields!column1.Value = "-", Nothing, Fields!column1.Value))
  + Sum(IIf(Fields!column1.Value = "-", 1, 0))

我对这两种情况使用了两个聚合的IIf 表达式。

第一个是CountDistinct 对所有非- 行,第二个只是对所有- 行的计数。

似乎在所有 - 行和没有 - 行的情况下都可以正常工作。

评论后编辑

如果您在 tablix 之外使用此表达式,则可能需要指定聚合的范围:

=CountDistinct(IIf(Fields!column1.Value = "-", Nothing, Fields!column1.Value), "MyDataSet")
    + Sum(IIf(Fields!column1.Value = "-", 1, 0), "MyDataSet")

【讨论】:

  • 我在使用它时两次收到此错误:[rsMissingAggregateScope] 文本框“Textbox25”的值表达式使用没有范围的聚合表达式。除非报表仅包含一个数据集,否则在数据区域之外使用的所有聚合都需要范围。我将数据集添加到每个计算中,它现在只显示一次错误。 =CountDistinct(IIf(Fields!column1.Value = "-", Nothing, Fields!column1.Value), mydataset) + Sum(IIf(Fields!column1.Value = "-", 1, 0), mydataset) 不确定如何解决这个问题,我在上面找到的东西不是很清楚。
  • 是的,如果您在 tablix 之外使用它,您会在多个数据集上看到该错误。在这种情况下,我已经用对我有用的表达式更新了答案。在您的评论中,我注意到您的数据集名称不在引号中;它需要。但可能只是一个错字。除此之外,它也区分大小写。要进行故障排除,一次只查看语句的一部分可能会有所帮助,即确认CountDistinct 有效,然后确认Sum,最后在它们都有效时将它们加在一起。
  • 是的,我忘了在数据集中添加引号,这只是一个错字。我目前无法测试,但它现在构建良好,没有该错误。我确实注意到 IIf 语句之后的第一个 Fields!column1.Value 在它下面有一条弯曲的红线,上面写着“未知集合成员”。我以前从未见过。
  • 如果您在 tablix/chart 之外的文本框中引用数据集中的字段,即使您指定了 Scope 参数,SSRS 也不够聪明,无法实现其来源,因此它会显示警告你看到了。这有点烦人,但在运行时应该没问题..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
相关资源
最近更新 更多