【问题标题】:Getting top 20 rows and the rest in 21st row in an SSRS Matrix Report在 SSRS 矩阵报告中获取前 20 行,其余在第 21 行
【发布时间】: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


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多