【问题标题】:SSRS Break after n occurrences of groupSSRS 在组 n 次出现后中断
【发布时间】:2017-11-30 21:51:29
【问题描述】:

我正在尝试对 SSRS 报告进行分组,以便每一页在 11 英寸标记附近自然中断。

您似乎无法动态设置 Interactive Height 属性,因此我已将其设置为 0 并对数据集应用分页符。

我假设大约每 3 个用户将占用大约一整页。我想在每 3 个 EmployeeID 分组后休息。我只看到考虑到RowCount 的中断,这在我的数据集中每个用户都不一致。一个用户可以有 1 行或多行。

如何在 SSRS 子组出现 3 次后中断?

这是我当前分组的图像:

我需要标题(标题、句点和空白行)出现在每个新页面上。 在每一页上,我都希望尽可能多地占用 11 英寸,但我愿意简单地说明我们将在每出现 3 次 EmployeeID 组后中断。

EmployeeID2 组可能不是必需的,它是在我尝试使用RowNumber 休息时实现的。

在我看来,我的问题有两种可能的解决方案:

  1. 有人告诉我如何每 11 英寸设置一次参数化分页符
  2. 有人告诉我如何在每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


【解决方案1】:

TSQL 分组逻辑最终起作用了。昨天我尝试该分组时,Visual Studio 一直在崩溃,但今天它没有......

无论如何,解决方案是创建一个新字段,根据我的需要对员工进行分组,然后我在 SSRS 中对其进行分组。我仍然不知道如何根据页面高度进行分组,但至少我能够根据子组的出现进行分组

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-09
    • 2019-12-02
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    相关资源
    最近更新 更多