在 s-s-rS 矩阵报告中获取前 20 行,其余在第 21 行
Posted
技术标签:
【中文标题】在 s-s-rS 矩阵报告中获取前 20 行,其余在第 21 行【英文标题】:Getting top 20 rows and the rest in 21st row in an s-s-rS Matrix Report 【发布时间】:2017-02-06 13:22:48 【问题描述】:我想要 s-s-rS 矩阵报告中的前 20 行,其余行应汇总到第 21 行,行名称硬编码为“其他”。
我创建了基于“Category_Name”的行分组和基于“Creation_Time”的列分组的 s-s-rS 矩阵报告。列组“Creation_Time”被格式化为以“M/yyyy”格式显示日期。我将每个分组的“Id_Number”聚合为 Count(Id_Number),我希望前 20 条记录按 count(Id_Number) 从高到低或降序排序。
我已经设置了可见性条件,如图所示:
我为“其他”行给出了以下表达式
=count(iif(RunningValue(Fields!Category_Name.Value,countdistinct,nothing)>20,Fields!Id_Number.Value,0)
但它没有用。我收到错误消息“无法将正在运行的函数指定为嵌套聚合”。
我之前曾尝试在 s-s-rS Row 分组上使用 TOP N 过滤器,它基于 count(Id_Number) 提供前 20 行。但是如果我们将“组总计”添加到行分组中,它将给出所有行的总数和不仅仅是前 20 行。我想到的逻辑是从所有行的总数中减去前 20 行的总数。但我无法获得前 20 行的总数。
我使用带有 2 个参数的基本 sql 查询,@Begin AND @End :
SELECT Category_Name, Id_Number, Creation_Date
FROM Tbl
WHERE Creation_Date BETWEEN @Begin AND @End
此报告的期望输出是这样的:
除了最后一行“Others”之外,我得到了所有想要的输出。
【问题讨论】:
您是从 SQL 查询中获取数据吗? 是的,从 mssql 查询中获取数据。 您需要在 SQL 而不是报表中处理此问题,使用row_number
和包装select
。你能发布你的脚本吗?
【参考方案1】:
修改您的 sql 选择脚本以包含以下内容: CASE WHEN ROW_NUMBER() OVER (ORDER BY SUM(Id_Number)DESC) >20 then 'Top 20' else 'Others' End AS 'Type'
然后在您的报告中添加另一个按“type”=“others”过滤的单独 tablix
【讨论】:
以上是关于在 s-s-rS 矩阵报告中获取前 20 行,其余在第 21 行的主要内容,如果未能解决你的问题,请参考以下文章