考虑在SSRS报告的tablix中显示的以下数据集:
GroupID | ProductID
---------------------
Group 1 | Product1
Group 2 | Product10
Group 1 | Product2
Group 3 | Product27
Group 2 | Product12
Group 2 | Product14
我通过插入行/外部组添加了新行 - 下面。
在这一行中,我显示总行数 - 通过CountRows()实现,不同组的数量 - 通过= CountDistinct(Fields!GroupID.Value)实现
我还想显示具有最多行数的组的名称,在这种情况下,它将是“Group 2”(如果有多个具有相同行数的组,我只需要显示其中一个)。
如何实现这一目标?我想我应该使用一些聚合或查找函数,但到目前为止还无法弄清楚如何。
PS 此报告正在从Crystal Reports移植到SSRS。在Crystal Reports中,通过“N次最常见”的摘要很容易实现N = 1,但据我所知,在SSRS中没有这样的内容。
答案 0 :(得分:1)
添加一个Tablix并将GroupId
设置为Row Group。
对于行计数使用:
=Count(Fields!GroupID.Value)
右键单击“行组”窗格中的GroupID
组,然后转到组属性,在“过滤器”选项卡中使用以下设置:
Expression
使用:
=Count(Fields!GroupID.Value)
它将过滤具有最大行数的前1个组。结果是这样的:
更新:如果有多个具有相同发生次数的组,则上一个解决方案不起作用。
添加Tablix,删除详细信息(默认组)并在第一列中添加GroupID字段。
对于Rows Count列,使用以下表达式将DataSetName
替换为数据集的实际名称:
=LookupSet(
Fields!GroupID.Value,
Fields!GroupID.Value,
Fields!GroupID.Value,
"DataSetName"
).Length
右键单击您的Tablix并转到tablix属性,在Sorting
标签中选择Z to A
订单,然后使用Sort By
文本框中的上一个表达式。
即使存在具有相同发生次数的第二组,也应显示唯一的一组。
如果有帮助,请告诉我。