【问题标题】:SSRS: Showing only columns associated with matrix row groupSSRS:仅显示与矩阵行组关联的列
【发布时间】:2024-05-21 13:00:01
【问题描述】:

我正在尝试使用矩阵创建一个报告,该报告仅显示相关行组的列。

例如,我有一个软件,它允许系统用户定期“取样”,这些样本存储在数据库中。这些数据的存储方式是按人名分组。

报告的格式是这样的。

Person  Item    TimeStamp1 TimeStamp2 
John    Item1   Value1-1   Value1-2   
John    Item1   Value2-1   Value2-2   
John    Item1   Value3-1   Value3-2   
--PageBreak--
Person  Item    TimeStamp1 TimeStamp2 
Steve   Item1   Value1-1   Value1-2   
Steve   Item1   Value2-1   Value2-2   
Steve   Item1   Value3-1   Value3-2   

发生的情况是,我得到了换行符,但 Steve 的列出现在 John 中,而 John 出现在 Steve 中,就像这样。

Person  Item    TimeStamp1 TimeStamp2 SteveTime1 SteveTime2
John    Item1   Value1-1   Value1-2   
John    Item1   Value2-1   Value2-2   
John    Item1   Value3-1   Value3-2   
--PageBreak--
Person  Item    JohnTime1  JohnTime1 TimeStamp1 TimeStamp2 
Steve   Item1                        Value1-1   Value1-2   
Steve   Item1                        Value2-1   Value2-2   
Steve   Item1                        Value3-1   Value3-2   

我认为添加基于用户组的分页符会奏效,但仍然存在额外的列。

有没有办法只为页面上的关联组显示列?

【问题讨论】:

  • 如果约翰和史蒂夫在同一个页面上,你能澄清一下你想要什么吗?
  • 我永远不希望他们出现在同一页面上。该示例旨在简化场景。实际上,John 和 Steve 分别有几页数据。

标签: reporting-services ssrs-tablix


【解决方案1】:

我假设在您的问题中,您的意思是第一个“TimeStamp1”实际上与“JohnTime1”相同,对吧?

不要认为你可以在矩阵中轻松做到这一点,如果有的话。它可能涉及对时间戳的排名进行分组,并在行组中显示该排名的时间戳。

不过有一个更简单的解决方案。我的建议是执行以下操作:

  • 将矩阵嵌套在列表中
  • 列表将迭代不同的人/项目组合(或仅人,取决于您的需要)
  • 将矩阵的PageBreak 属性设置为Start
  • 矩阵在人员/项目上有行组
  • 矩阵在时间戳上有列组
  • 值(Value1-1 等)作为数据

【讨论】:

    【解决方案2】:

    有几种方法可以做到这一点 - 我个人会在查询中引入一个联合,因此 JohnTime 和 SteveTime 都映射到 TimeStamp。

    有时这是不可能的,或者证明很困难(名称数量的增加使得这不切实际),在这种情况下,您可以在列可见性上放置一个公式,该公式仅在列具有正确名称时才显示列,即 TimeStamp1和时间戳2。如果它在关闭可见性之前计算内容,我不确定这是否会减慢报告速度。

    无论如何,希望这会有所帮助!

    【讨论】: