【问题标题】:SSRS Report from a PIVOT query with unknown number of columns来自具有未知列数的 PIVOT 查询的 SSRS 报告
【发布时间】:2019-04-24 06:29:40
【问题描述】:

我有一个 PIVOT 查询返回未知数量的动态列。所以查询会返回类似

ID | Col1 | Col2 | ..... |科尔N

ID 是唯一的静态列,其余均为动态列。列的数量和名称未知。

如何在 SSRS 中编写可以处理此问题的报告?任何提示和指导将不胜感激。

谢谢。

【问题讨论】:

    标签: sql tsql reporting-services pivot


    【解决方案1】:

    SSRS 将无法处理您的数据透视表,因为在设计时这些列是未知的。 SSRS 具有称为Matrix 的功能,如果您的设计时间结构是静态的,它将处理基于运行时数据的运行时数据。

    ID | ColumnName | Value
    ------------------------
    1  | Colu1      | Value1
    1  | Colu2      | Value2
    2  | Colu2      | Value2
    

    我建议您从 TSQL 返回详细信息行并允许 SSRS 处理数据透视表。这将允许一个存储过程用于多个 SSRS 报告和聚合,而不是 PIVOT 提供的单个聚合。

    为了节省重复处理,Matrix 还将处理排序,因此无需在 TSQL 内部进行排序。

    参考:Create a Matrix

    【讨论】:

    • 所以目前我的查询以我上面列出的形式返回数据。您希望我以以下格式编写查询 - ID |专栏 |值,然后在 SSRS 中使用矩阵?
    • SSRS 在运行时数据透视表方面做得很好。是的,我会使用上述结构编写查询并使用矩阵。
    • 好的,我编写了查询以获取以下格式的数据。但是我需要一点改变。查询是 select distinct pApps.ApplicationID, ppl.LastName As ColName, isnull(ev.AnswerNumeric, 0) as ColValue from pApps inner join ev on pApps.SomeColumn = ev.SomeColumn inner join ppl on pApps.SomeColumn = ppl.SomeColumn Order通过 ApplicationID 我还需要添加一个总列。数据以 ApplicationID | 的形式出现列名 | ColValue 12 |一个 | 5 12|乙| 9 14 |一个 | 12 14 |乙| 3 我需要为每个应用程序添加一个总数,即 A 和 B 的总和
    • @JackSmith SSRS Matrix 能够为您创建一个总行。 Reference
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多