2016-09-15 79 views
0

考虑以下是在SSRS报告显示在表矩阵数据集:如何查找SSRS tablix数据集中最常出现的值?

GroupID | ProductID 
--------------------- 
Group 1 | Product1 
Group 2 | Product10 
Group 1 | Product2 
Group 3 | Product27 
Group 2 | Product12 
Group 2 | Product14 

我通过插入行/外线组加入新行 - 下面。

在此行我显示的行总数 - 通过CountRows(),不同的群体的数量来实现的 - 通过= CountDistinct实现(!字段GroupID.Value)

我也想显示该组的名称行数最多的情况下,在这种情况下,它将是“组2”(如果有多个具有相同行数的组,我只需要显示其中的一个)。

这是如何实现的?我想我应该使用一些聚合或查找功能,但目前为止无法弄清楚。

PS此报表正在从Crystal Reports移植到SSRS。在Crystal Reports中,通过N = 1的“N次最频繁”总结很容易实现,但据我所知,SSRS中没有这样的事情。

回答

1

添加一个tablix并将GroupId设置为Row Group。

enter image description here

的行数使用:

=Count(Fields!GroupID.Value) 

右键单击行组窗格GroupID组,去组属性,在过滤器选项卡使用以下设置:

enter image description here

对于Expression使用:

=Count(Fields!GroupID.Value) 

它将过滤行数最多的前1个组。其结果是这样的:

enter image description here

更新:如果有多于一组具有相同数量的occurencies的以前的解决方案是行不通的。

添加一个tablix,删除详细信息(默认组)并在第一列中添加GroupID字段。

enter image description here

对于行数列使用下面的表达式来替换DataSetName通过数据集的实际名称:

=LookupSet(
    Fields!GroupID.Value, 
    Fields!GroupID.Value, 
    Fields!GroupID.Value, 
    "DataSetName" 
).Length 

右键单击您的表矩阵和去Tablix属性,在Sorting选项卡中选择Z to A命令并使用Sort By文本框中的上一个表达式。

enter image description here

它应该显示即使与相同数目的occurencies中的第二组是存在的唯一一组。

让我知道这是否有帮助。

+0

是的,这有助于您,甚至不需要新Tablix中的“行数”列。然而,如果你有另外一个包含3个项目的组(比如说“组1”在这个数据集中也有3个项目),新的tablix将有2行 - “组1”和“组2”,我只想看到一个。我试图使用RowNumber()函数,但它不允许在过滤器中使用。 –

+0

@JoeSchmoe,检查我的更新。 –

+0

我决定使用你的第一个建议,并显示多个组,因为这似乎是更合适的解决方案。 –