【发布时间】:2017-11-30 21:51:29
【问题描述】:
我正在尝试对 SSRS 报告进行分组,以便每一页在 11 英寸标记附近自然中断。
您似乎无法动态设置 Interactive Height 属性,因此我已将其设置为 0 并对数据集应用分页符。
我假设大约每 3 个用户将占用大约一整页。我想在每 3 个 EmployeeID 分组后休息。我只看到考虑到RowCount 的中断,这在我的数据集中每个用户都不一致。一个用户可以有 1 行或多行。
如何在 SSRS 子组出现 3 次后中断?
我需要标题(标题、句点和空白行)出现在每个新页面上。
在每一页上,我都希望尽可能多地占用 11 英寸,但我愿意简单地说明我们将在每出现 3 次 EmployeeID 组后中断。
EmployeeID2 组可能不是必需的,它是在我尝试使用RowNumber 休息时实现的。
在我看来,我的问题有两种可能的解决方案:
- 有人告诉我如何每 11 英寸设置一次参数化分页符
- 有人告诉我如何在每
n个 SSRS 子组出现时设置一个参数化分页符
最后,补充说明:
我需要一个切换
PageBreak的参数。如果PageBreak Parameter设置为False,则标题将只出现一次,所有员工都将显示为InterActive Height = 0。如果将PageBreak Parameter设置为True,则每个新页面的顶部都会出现Header,并且每个页面将包含3 个员工。
我尝试在我的Stored Procedure 中实现一个分组字段,它使用下面的代码为每 3 名员工分配一个递增的组 ID,但是这个在 3 秒内运行的查询现在冻结了 SSRS,所以我希望使用以下方法实现分组SSRS 函数。
TSQL 分组逻辑:
,EmpRank AS (
SELECT DISTINCT
EmployeeID
,DENSE_RANK() OVER(ORDER BY FormattedName) AS 'EmpCounter'
FROM FilteredData
)
,EmpGrouping AS (
SELECT
EmployeeID
,((EmpCounter -1 ) / 3) AS 'EmpGroup'
FROM EmpRank
GROUP BY ((EmpCounter - 1) / 3)
,EmployeeID
)
SELECT
FilteredData.*
,EmpGrouping.EmpGroup
FROM FilteredData
LEFT OUTER JOIN EmpGrouping
ON EmpGrouping.EmployeeID = FilteredData.EmployeeID
ORDER BY EmpGroup, EmployeeID
提前谢谢你
【问题讨论】:
-
请将该图片链接更改为内嵌图片。这里的大多数观众都喜欢这样。谢谢
-
@KashifQureshi 你可以自己做,但现在不需要了:)
-
@Archer 哈哈,我知道,通常我会。但是今天我没心情
标签: sql-server reporting-services ssrs-grouping