SSRS 可以打印数据集中 2 行的 1 行详细信息

SSRS possible to print 1 row of detail with 2 rows in dataset

需要根据主组、问题选项卡、行和列 ID 将数据集中多行的值打印到详细信息中的单行。

正在寻求有关这在 SSRS 中是否可行的建议,可能使用嵌套表或 lookup/lookupset/join?

无法在数据库级别添加任何函数或过程,限于现有数据集格式。

第 # 列仅限于 1 或 2

数据集

| MainGroup | QuestionTab | QuestionRow | QuestionColumn | Question    | Answer    |
|-----------|-------------|-------------|----------------|-------------|-----------|
| Group1    | TabA        | 1           | 1              | Question1   | Answer1   |
| Group1    | TabA        | 1           | 2              | Question2   | Answer2   |
| Group1    | TabA        | 2           | 1              | Question3   | Answer3   |
| Group1    | TabA        | 2           | 2              | Question4   | Answer4   |
| Group1    | TabB        | 1           | 1              | Question234 | Answer234 |
| Group1    | TabB        | 2           | 1              | Question789 | Answer789 |

当前输出,通过查找、查找集、连接尝试了各种分组和表达式

| MainGroup | QuestionTab | QuestionRow | Question1output | Answer1output | Question2output | Question2output |
|-----------|-------------|-------------|-----------------|---------------|-----------------|-----------------|
| Group1    | TabA        | 1           | Question1       | Answer1       |                 |                 |
| Group1    | TabA        | 1           |                 |               | Question2       | Answer2         |
| Group1    | TabA        | 2           | Question3       | Answer3       |                 |                 |
| Group1    | TabA        | 2           |                 |               | Question4       | Answer4         |
etc etc

期望的输出

| MainGroup | QuestionTab | QuestionRow | Question1output | Answer1output | Question2output | Question2output |
|-----------|-------------|-------------|-----------------|---------------|-----------------|-----------------|
| Group1    | TabA        | 1           | Question1       | Answer1       | Question2       | Answer2         |
| Group1    | TabA        | 2           | Question3       | Answer3       | Question4       | Answer4         |
| Group1    | TabB        | 1           | Question234     | Answer234     |                 |                 |
| Group1    | TabB        | 2           | Question789     | Answer789     |                 |                 |

这应该很简单。

我首先使用以下内容重新创建了您的数据集...

DECLARE @t TABLE (MainGroup varchar(20), QuestionTab varchar(20), QuestionRow int, QuestionColumn int, Question varchar(20), Answer varchar(20))

INSERT INTO @t VALUES 
('Group1', 'TabA', 1, 1, 'Question1', 'Answer1'),
('Group1', 'TabA', 1, 2, 'Question2', 'Answer2'),
('Group1', 'TabA', 2, 1, 'Question3', 'Answer3'),
('Group1', 'TabA', 2, 2, 'Question4', 'Answer4'),
('Group1', 'TabB', 1, 1, 'Question234', 'Answer234'),
('Group1', 'TabB', 2, 1, 'Question789', 'Answer789')

SELECT * FROM @t

接下来我添加了一个包含 1 行组和 1 列组的矩阵控件。

行组必须对所有使该行唯一的列进行分组,在本例中为 MainGroupQuestionTabQuestionRow

注意:下面的组名并不重要,默认情况下是这样命名的,因为我是通过将主组列拖到矩阵控件开始的。

列组需要在 QuestionColumn

上分组

通过 right-clicking 第一列添加额外的列(不是组)并选择插入--在组内--向右,重复这样你在行组中有 3 列。

在列组列(最后一列)中,以同样的方式在组内插入一个新列。

您现在应该在设计中有 5 列。如下图所示分配每一列。

要获取自定义列 headers,首先我必须拆分默认合并的单元格,然后将表达式设置为

="Question " & Fields!QuestionColumn.Value & " output"

="Answer " & Fields!QuestionColumn.Value & " output"

分别。最后对 header 进行了一点格式化,这就是结果。