SQL Server报表生成器 - 显示子组的计数

时间:2013-05-09 19:22:38

标签: reporting-services

我有一个显示客户订单数据的SQL Server Reporting Services报告,但其分组如下:

Store
    Customer
        Customer Order Items

因此,每个报告都是一组商店,每个商店都有一个客户子组,然后是每个客户的商品。我试图在报告中的相应组的每个标题记录中显示汇总销售和其他信息。大部分都运行良好,但对于每个商店标题记录,我想显示客户的数量。我正在尝试使用一些变体和\或RowCount,CountDistinct和其他聚合函数的组合,但无济于事。

任何人都可以帮我确定我在商店级别标题中显示的“计数”客户群是如何实现的吗? TIA!

1 个答案:

答案 0 :(得分:6)

客户上的

CountDistinct应该可以正常工作 - 如果它位于 Store 组标题行中,则无需指定范围。

我把一个简单的测试放在一起。

数据:

enter image description here

设计师报告:

enter image description here

最值得注意的是 Store 标题行中 Customer 上的CountDistinct;这只是使用的表达式:

=CountDistinct(Fields!customer.Value)

结果,显示正确的值:

enter image description here

如果我遗失了什么,请告诉我。

评论后修改:

提前知道这件事有多长。

之前的报告确实有商店客户的行组,但我已对其进行了修改,以使其更加清晰,希望如此。仍然基于相同的DataSet:

enter image description here

您可以看到有三个行组,报告中的每一行实际上都是属于其中一个组的组标题行。

Store 组标题行中,我保留了相同的CountDistinct表达式。我还添加了一个CountRows()表达式,以显示每个不同组中可用的实际行数。

enter image description here

在这里你可以看到 Store1 CountRows正在返回 4 ,即我们在这个范围内汇总了四行,这就是我们期待看DataSet。

同样,当我们在商店范围内应用=CountDistinct(Fields!customer.Value)时,我们正在考虑这些 4 行,我们会看到 Store1的两个不同客户,这对我来说似乎是正确的。

对于 Store2 ,我们总共考虑 6 行,其中有三个不同的客户。同样,只需应用=CountDistinct(Fields!customer.Value),我们就会获得正确的价值。

希望这个重新调整的报告有助于澄清问题。如果我仍然没有得到您的要求,您能否根据我的示例DataSet解释我的示例报告中哪些数字有问题?这样我就能轻松调整一下。