【发布时间】:2017-02-06 13:22:48
【问题描述】:
我想要 SSRS 矩阵报告中的前 20 行,其余行应汇总到第 21 行,行名称硬编码为“其他”。
我创建了基于“Category_Name”的行分组和基于“Creation_Time”的列分组的 SSRS 矩阵报告。列组“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)
但它没有用。我收到错误消息“无法将正在运行的函数指定为嵌套聚合”。
我之前曾尝试在 SSRS 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。你能发布你的脚本吗?
标签: sql-server reporting-services ssrs-2008-r2