【问题标题】:SQL Reporting Services - Subreports Broken into multiple columnsSQL Reporting Services - 分成多列的子报表
【发布时间】:2010-03-30 03:08:43
【问题描述】:
我从某人那里继承了一个 SQL Reporting Services .rdl 项目,需要帮助修复一些功能。
在报表的每一行中,都有一个子报表。为了节省空间,子报表被分成 3 个。这样在报表的每一行中,它将子报表的数据分成 3 个较小的表。现在,它水平填充这 3 个子报表。 (即,如果结果有 9 个值,则第一个子表将有 1、4 和 7,第二个子表将有 2、5 和 8 等)
有没有办法让它垂直填充子表? (即第一个子表将有 1,2 和 3)
谢谢!
【问题讨论】:
标签:
sql
reportingservices-2005
subreport
【解决方案1】:
默认情况下,多列报表应垂直填充。事实上,甚至没有水平填充的选项,所以我想知道它是如何完成的。也许基础查询已被修改?
【解决方案2】:
事实上,我对查询进行了更深入的研究,结果发现列号作为报告参数传递,并且使用列号的模对结果重新排序。我现在没有它,所以我没有确切的语法。
【解决方案3】:
对于任何尝试这样做的人的更多信息:
事实证明,子报表查询生成了一个指示行号的列
ROW_NUMBER() OVER (PARTITION BY columnName ORDER BY otherColumn) AS RowNumber
然后在报表中,子报表被包含 3 次。每个子报表都有一个名为 Column 的报表参数,第一个值为 1,第二个值为 2,最后一个值为 0。然后子报表上有一个过滤器
=RowNumber Mod 3 = 列
这样子报表结果被分成3个子报表,它们都可以放在同一行以节省空间。