【问题标题】:SSRS - Dynamic DatasetsSSRS - 动态数据集
【发布时间】:2017-06-22 18:11:25
【问题描述】:

我有一个使用存储过程的报告,该存储过程可以具有三个不同的输出,具体取决于参数值的选择。

参数Report Type 有以下选项:“日/月/年”。

如果用户选择“Day”,那么程序中有一个IF语句来使用表A并返回第1、2、3列。

如果用户选择“月”,则有一个 IF 语句使用表 B 并返回第 4、5、6 列

今年的情况相同。

所以存储过程可能会返回:

   Select column 1, 2, 3 from Table 1
   Select column 4, 5, 6 from Table 2
   Select column 7, 8, 9 from Table 3

如您所见,我使用此存储过程在报告中创建的数据集无法“刷新字段”,它会提取字段供我在报告中使用。

如何在我的报告中使用具有不同返回值的存储过程,以便我可以设置字段以显示数据?

【问题讨论】:

    标签: sql-server stored-procedures reporting-services


    【解决方案1】:

    我认为您最好的方法是让每个案例返回相同的列名和类型集。如果一种情况返回的列比另一种少,那么只需用空值填充多余的列。

    【讨论】:

    • 感谢您的帮助。这是有道理的,感谢您的帮助
    【解决方案2】:

    您可以通过您的 SP 决定参数并进行计算的方式来做到这一点

    CREATE PROCEDURE dbo.uspGetData @paramValue nvarchar(30)
    AS
    
      Select [column 1] as col1, [column 2] as col2, [column 3] as col3 from [Table 1] where @paramValue=N'Day'
      UNION 
      Select [column 4] as col1, [column 5] as col2, [column 6] as col3 from [Table 2] where @paramValue=N'Month' 
      UNION
      Select [column 7] as col1, [column 8] as col2, [column 9] as col3 from [Table 3] where @paramValue=N'Year'
    GO
    

    【讨论】:

      猜你喜欢
      • 2015-10-17
      • 2023-03-14
      • 2019-09-30
      • 1970-01-01
      • 1970-01-01
      • 2021-03-26
      • 1970-01-01
      • 2017-01-06
      • 1970-01-01
      相关资源
      最近更新 更多