在SSRS 2008中,是否可以创建一个横跨矩阵所有列的行?

19

能否在SSRS 2008矩阵中添加一行,使其跨越整个矩阵的所有列?

这个简陋的图表大致展示了我所需求的:

visual example of the matrix layout I'm looking for

基本思想是每个行项目都是一个人,每个列都是该人表单中的一个字段。这些字段本身是动态的(并且在矩阵上实现为列组)。还包括其他列组以附加非动态表单字段,例如记录输入时间和输入人员。在每个人的记录下面是一个评论字段,它应跨越其上面的所有表单字段。
目前,我将矩阵嵌入到另一个tablix中,其中矩阵中包含名称和字段,而父tablix中包含评论。这对于数据有效(矩阵的每个实例最终成为一行),但标题重复太多次(每个人一次),因为它附加到矩阵上。我唯一考虑如何解决此问题的想法是在父tablix中创建另一个具有相同分组的矩阵,并使用它来显示标题...但这需要相当多的手动同步才能使两个矩阵保持一致。
编辑:关键问题在于使第二行跨越多个列组。
6个回答

13

以下是您可以做的事情:

  1. 选择要添加到上面的列分组,右键单击并选择添加分组... 父分组...
  2. 根据不会聚合数据的东西对列进行分组。您需要从数据集中选择一个字段进行分组,以便创建重叠的列分组。
  3. 选中添加分组标题

现在,您应该看到类似于这样的内容:

Matrix with columns

接下来,您只需将Value1字段及其标题移动到新列的右侧,在矩阵分隔符之外。完成后,只需删除您刚刚从中复制了Value1的未分组列,并确保选中仅删除列复选框。

您的成品应如下所示:

enter image description here


2
我相信问题是“如何为每个行组获取标题”,而不是所有行的摘要统计。 - Andrew Hill
现在你只需要将Value1字段及其标题移动到新列右侧的矩阵分隔符之外即可。如果不清楚,请提供相关图片。 - serge

6

这是可能的 - 以上答案是部分答案,遗漏了一个关键步骤:合并子行的单元格。

首先,右键点击所需分组的行,然后选择 插入行 -> 在组中 - 下方,您将获得两行单元格在列上对齐的表格。

其次,ctrl 点击新行中的所有单元格(即没有数据的行),然后右键点击其中一个突出显示的单元格,选择 合并单元格

现在,您已经拥有了所需的表格。要向新行添加值:首先右键单击新的(多列)单元格,选择 创建占位符,然后将所需的数据集项添加到占位符中。


1
谢谢 - 这是最好的解决方案。像魔法一样有效! - Anton Krouglov

6
尝试在列组中添加“header”,并使用(1=1)的分组表达式进行分组。然后需要定义一个详细字段。如果您使用正确的数据定义其他组,则“header”将跨越所有详细列。根据其他选项,您可能需要合并单元格。

5

[编辑]

经过多次尝试,我认为在SSRS中无法实现这个功能。我能想到的最好的方法是创建一个跨越第1、2、3列的组页脚,但不包括用户列。

[原始回复]

我最近也做了类似的事情。

首先,您使用什么工具创建SSRS报表?(我使用SQL Server Business Intelligence Development Studio)

  • 您需要创建一个行分组(按人员分组)

  • 在“设计”视图中向表格添加一行(右键单击,“插入行 -> 在组内 - 下面”)。

  • 在该行上添加一个表达式,用于提取“注释”列的值(=Fields!Comment.Value)。

如果有帮助,请告诉我...


1
我正在使用Visual Studio 2008。矩阵已经在人员字段上有一个行组...你是不是想以某种方式再添加另一个?当我添加新行时,在设计器中它会显示为每个列组一个单元格。我希望它只有一个单元格包含所有列组。 - AaronSieb
1
将整行中的所有单元格都选中,右键点击,然后选择“合并”。 - TexasViking
3
很遗憾,在选择了多个列组的单元格时,合并单元格选项似乎不可用。我需要一个跨越多个列组的单元格……这似乎是主要问题所在。 - AaronSieb
3
经过多次尝试,我现在放弃了。现在我完全理解这个问题,但我也无法创建一个跨越分组列和详细列的组页脚。 - TexasViking

2
最简单的方法是创建一个只有一列和行分组的Tablix。 然后,在这个分组内创建两行。 在第一行中插入一个矩阵,然后按您的喜好进行子分组。 我曾经遇到过类似的问题,这是我的解决方案。 我花费了很长时间来摸索,直到我意识到解决我的问题并不是“使单元格跨越多个列组”,而是“将单元格分裂成多个列组”。

1
触发了一个思考过程,希望能够解决我的问题,即如何在每个行组后显示子报表,而不必将其嵌入单元格中。使用一个外壳Tablix来控制分组,然后再使用两个子报表可能会起作用。 - TDP

0
您可以通过为每个人使用子报表来实现目标。子报表将接收员工ID并为您创建层次结构。请确保您的子报表列宽与父报表的列宽匹配。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接