如果最终列数未知,您将如何显示由使用动态SQL作为SSRS报告的存储过程生成的数据透视表?

时间:2018-02-22 22:02:16

标签: sql-server tsql reporting-services pivot-table dynamic-sql

我有一个存储过程,用于构建问答类型表单的动态数据透视表。表单上的每个问题都分配给一个部分。同一表单有多个版本,表单的每个新版本都会弃用现有列或添加新列。我想创建一个SSRS报告,允许用户选择一个部分作为参数,并显示与该部分相关的所有问题。

例如,让我们使用以下数据:

 +============+=============+================+==============+
 | Form_id    | Item        | Value          | Section_Code |
 +============+=============+================+==============+
 | 123        | F_Name      | Joe            | Bio          |
 | 123        | L_Name      | Smith          | Bio          |
 | 123        | Occupation  | Plumber        | Professional |
 | 123        | Fav_Color   | Red            | Preference   |
 | 456        | F_Name      | Harry          | Bio          |
 | 456        | L_Name      | Potter         | Bio          |
 | 456        | Occupation  | Wizard         | Professional |
 | 456        | Fav_Color   | Blue           | Preference   |
 | 789        | F_Name      | Dave           | Bio          |
 | 789        | L_Name      | Grohl          | Bio          |
 | 789        | Occupation  | Musician       | Professional |
 | 789        | Fav_Color   | Green          | Preference   |
 | 789        | Fav_Food    | Capn Crunch    | Preference   |
 | 789        | Birth_City  | Phoenix        | Bio          |
 | 789        | Has_Pets    | Yes            | Animals      |
 +============+=============+================+==============+

form_id为123和456的表单具有相同的版本(即:相同的问题),但form_id 789使用了该表单的新版本。新版本增加了3个问题; Fav_Food,Birth_City和Has_Pets。

我已经创建了一个存储过程,该过程将使用动态SQL创建一个数据透视表,以返回一个问题和列表。一种特定形式的答案。例如,调用“Bio'生物”部分的存储过程。生产:

 +=============+==============+=============+===============+
 | Form_id     | F_Name       | L_Name      | Birth_City    |
 +=============+==============+=============+===============+
 | 123         | Joe          | Smith       | NULL          |
 | 456         | Harry        | Potter      | NULL          |
 | 789         | Dave         | Grohl       | Phoenix       |
 +=============+==============+=============+===============+

如果发布了新版本的表单并且2个问题(即:列)被添加到Bio部分,则存储过程将显示上述数据以及两个新问题。此功能是否可以显示为SSRS报告?

1 个答案:

答案 0 :(得分:0)

您可以使用Matrix代替表格。

This可以提供帮助