Reporting services SSRS:我怎么能;“继续”;行到第二行“;栏「;避免浪费空间?

Reporting services SSRS:我怎么能;“继续”;行到第二行“;栏「;避免浪费空间?,reporting-services,ssrs-tablix,ssrs-2014,Reporting Services,Ssrs Tablix,Ssrs 2014,My tablix在其中一列上分组,只需输出每行的时间戳列表。由于时间戳只有两列,因此会浪费大量空间 这是当前布局的基本模型 。。。这是理想的布局: 如图所示,理想情况下,报告将动态调整,以在左侧“列”中显示组的一半行(如果不均匀,则包括额外的行),并在右侧“列”中显示其余行。这在SSR中是可能的吗?如果不符合描述,您可以建议类似的结果吗?只要您的数据集可以更新以支持它,您就可以这样做 首先,我获取了一些样本日期时间数据,并将其插入名为@t的表变量中。您只需要将@t替换为实际的表名。这给了我

My tablix在其中一列上分组,只需输出每行的时间戳列表。由于时间戳只有两列,因此会浪费大量空间

这是当前布局的基本模型

。。。这是理想的布局:


如图所示,理想情况下,报告将动态调整,以在左侧“列”中显示组的一半行(如果不均匀,则包括额外的行),并在右侧“列”中显示其余行。这在SSR中是可能的吗?如果不符合描述,您可以建议类似的结果吗?

只要您的数据集可以更新以支持它,您就可以这样做

首先,我获取了一些样本日期时间数据,并将其插入名为
@t
的表变量中。您只需要将@t替换为实际的表名。这给了我以下的启示

然后我获取这些数据,并计算出数据应该位于的行和列。在本例中,我使用一个参数来定义所需的列数。如果有用的话,您可以这样做并从报表中传递它,或者只是将其更改为staic值。我将演示传入的参数

以下是查询(注意如果您想从报告中传递此信息,您需要注释掉
@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
--用下面的实际表名替换@t

声明@Columns int=2--只要您的数据集可以更新以支持它,您就可以使用它来执行此操作

首先,我获取了一些示例日期时间数据,并将其插入到名为
@t
的表变量中

然后,我获取这些数据并计算数据应该包含的行和列。在本例中,我使用一个参数来定义所需的列数。如果有帮助,您可以这样做并从报表中传入,或者将其更改为staic值。不过,我将演示传入的参数

以下是查询(注意如果您想从报告中传递此信息,您需要注释掉
@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
--用下面的实际表名替换@t

DECLARE@Columns int=2——你的详细答案比我希望的要多得多。我问的时候没有意识到,但事实证明我需要一个额外的小组(如果你愿意的话,可以分为小组)。我相应地调整了您的SQL,并按照相同的逻辑调整了tablix。这无疑帮助我提高了SSRS技能。谢谢Alan!我在组标题方面仍然存在一些问题。本质上,我希望它能够跨越矩阵的所有列(可以说是合并单元格)。我不得不解决它位于左侧的一个专用列中的问题,但可能已经发现了类似的问题。我将很快尝试。您可以在GroupID组中的其他行上方添加一行,您应该能够合并单元格,因为它们不在details组中,并将表达式设置为您喜欢的任何值。I'm don think I'm getti在您的上一张图片中,我基本上希望合并3个列标题单元格(包含1、2和3)并跨越这些列。然后,我将添加一个矩形和文本框来排列组数据,使其呈现。但是,合并选项仅适用于双虚线左侧的单元格(即不属于列组的一部分).AH是的,因为它是一个矩阵而不是一个表,所以不能跨动态列合并单元格。可以使用子报表进行合并。子报表将接受一个GroupID参数,并且只显示该组的数据,然后主报表将简单地将一个表绑定到组列表,子报表位于表的详细信息行上。这将给你完全的控制权,但如果你需要帮助,开始一个新的问题。子报告的想法听起来不错,我想我有足够的时间开始,但现在需要停止这个想法。这将是V2.:)再次感谢Alan!你的详细回答超出了我的期望。我问的时候没有意识到,但事实证明我需要一个额外的小组(如果你愿意的话,可以分小组)。我相应地调整了您的SQL,并按照相同的逻辑调整了tablix。这无疑帮助我提高了SSRS技能。谢谢Alan!我在组标题方面仍然存在一些问题。本质上,我希望它能够跨越矩阵的所有列(可以说是合并单元格)。我不得不解决它位于左侧的一个专用列中的问题,但可能已经发现了类似的问题。我将很快尝试。您可以在GroupID组中的其他行上方添加一行,您应该能够合并单元格,因为它们不在details组中,并将表达式设置为您喜欢的任何值。I'm don think I'm getti在您的上一张图片中,我基本上希望合并3个列标题单元格(包含1、2和3)并跨越这些列。然后,我将添加一个矩形和文本框来排列组数据,使其呈现。但是,合并选项仅适用于双虚线左侧的单元格(即不属于列组的一部分).AH是的,因为它是一个矩阵而不是一个表,所以不能跨动态列合并单元格。可以使用子报表进行合并。子报表将接受一个GroupID参数,并且只显示该组的数据,然后主报表将简单地将一个表绑定到组列表,子报表位于表的详细信息行上。这将给你完全的控制权,但如果你需要帮助,开始一个新的问题。子报告的想法听起来不错,我想我有足够的时间开始,但现在需要停止这个想法。这将是V2:)再次感谢艾伦!