【问题标题】:SSRS possible to print 1 row of detail with 2 rows in datasetSSRS 可以在数据集中打印 2 行的 1 行详细信息
【发布时间】:2021-05-17 20:13:58
【问题描述】:

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

寻找关于这在 SSRS 中是否可行的建议,可能使用嵌套表或查找/查找集/连接?

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

列 # 仅限于 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     |                 |                 |

【问题讨论】:

    标签: reporting-services ssrs-2012 ssrs-tablix


    【解决方案1】:

    这应该相当简单。

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

    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上分组

    通过右键单击第一列并选择 insert--inside group--right 来添加额外的列(而不是组),重复此操作,以便在行组中有 3 列。

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

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

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

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

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

    分别。最后在标题上进行一点格式化,这就是结果。

    【讨论】:

    • 太棒了,我过度设计了 x10。效果很好,当我在这里获得街头信誉时会加分。谢谢楼主!
    • 不客气。不需要投票,这只是为了当你发现一个你没有问过的有用的答案时。正如您所做的那样,将答案标记为已接受是正确的做法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多