SSRS - 动态数据集

时间:2017-06-22 18:11:26

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

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

参数private void sendWhatsapp(String message){ Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, message); sendIntent.setType("text/plain"); sendIntent.setPackage("com.whatsapp"); if (sendIntent.resolveActivity(getPackageManager()) != null) { startActivity(sendIntent); } } 具有以下选项:“日/月/年”。

如果用户选择“Day”,则过程中有一个IF语句,用于使用表A并返回第1,2,3列。

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

年份相同的情况。

因此存储过程可能会返回:

Report Type

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

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

2 个答案:

答案 0 :(得分:1)

我认为您最好的方法是让每个案例都返回相同的列名和类型集。如果一个案例返回的列数少于另一个案例,那么只需用空值填充额外的列。

答案 1 :(得分:0)

您可以通过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