SSRS:我怎样才能 "continue" 行到第二 "column" 并避免浪费空 space?

SSRS: How can I "continue" rows to a second "column" and avoid wasting empty space?

我的 Tablix 在其中一列上分组,只需要为每一行输出一个时间戳列表。由于时间戳只有两列,因此浪费了很多 space.

这是当前布局的基本模型...

...这是所需的布局:

如图所示,理想情况下,报告会动态调整以在左侧“列”中显示一组行的一半(如果不均匀,则包括额外的行),在右侧“列”中显示其余行。这对 SSRS 来说可能吗?如果与描述的不一样,你能推荐一些具有类似结果的东西吗?

只要您的数据集可以更新以支持它,您就可以执行此操作。

首先,我抓取了一些样本日期时间数据并将其插入到名为 @t 的 table 变量中。您只需要将 @t 换成您实际的 table 名称即可。这给了我以下内容

然后我获取这些数据并计算数据应该位于的行和列。在这个例子中,我使用一个参数来定义我想要的列数。如果有帮助,您可以这样做并从您的报告中传递它,或者只是将其更改为静态值。不过,我将使用传入的参数进行演示。

这是查询(注意 如果你想从你的报告中传递它,你需要注释掉 @Columns 声明,但现在我们只是在 SSMS 或类似软件中测试。

-- REPLACE @t with your actual tablename below
DECLARE @Columns int = 2 -- <= comment this out when you copy into your dataset query

SELECT 
    *
    , ColumnNum = ((SortOrder-1) % @Columns) + 1
    , RowNum = ROW_NUMBER() OVER(PARTITION BY GroupID, SortOrder % @Columns ORDER BY SortOrder)
    FROM(
        SELECT 
                ROW_NUMBER() OVER(PARTITION BY GroupID ORDER BY dt) as SortOrder,
                GroupID, dt
            FROM @t) x 
    ORDER BY GroupID, SortOrder

这为我们提供了以下输出

现在我们要做的就是在报表中使用矩阵控件来正确显示它。

  1. 创建新报告
  2. 添加数据源和数据集
  3. 如上设置您的数据集查询如果您想对其进行参数化,请记住注释掉DECLARE @Columns行。
  4. 添加矩阵控件
  5. RowNum 拖到 'Rows' 占位符,将 dt 拖到 'data' 占位符,最后将 select ColNum 拖到列占位符

矩阵应该如下所示(我们还没有完成...)

  1. 在行组面板中,将 GroupID 拖到现有行组上方(在我的示例中是在 rownum 上方),这样它就创建了一个 parent 组。
  2. 最后,通过 right-clicking rownum 文本框并执行“Insert Row, Inside Group - Below”,在 RowGroup 组内添加一个空行。这只会给我们组之间的差距

注意:我已经更改了 rownum 和 columnnum 文本框的颜色,因为我们可以在测试完成后删除它们。

最终设计应该是这样的。

当我们 运行 报告并将参数设置为 2 时,我们得到这个

将其设置为 3,我们得到这个

您现在可以删除顶行和中间列以去除行号和列号。如果你想在你的样本中有一个 header 组。再次在组内添加一行,但这次在顶部,然后添加一个表达式以提供您想要的标题。