如何在SSRS

时间:2019-04-03 14:36:45

标签: sql reporting-services

我有一些SQL代码,该参数声明一个参数(多个值作为字符串),其他变量从该参数开始工作。我的代码在SQL MS中运行良好,但是我需要带有特定值的参数multi pick list,然后我需要以字符串而不是列表的形式传递我的SQL语句。这就是我在努力的地方

我尝试创建一个附加参数以通过使用联接表达式= Join(Parameters!ReportPeriod.Value,“,”)通过选择列表输出,但这似乎仅在报表中使用表达式而不起作用时有效参数

下面为我需要的报告设置了所有变量,虽然有点粗糙但效果很好。这需要作为产生3组结果的3个数据集的1个选择列表,每个报告期使用一张表

在SSRS选择列表中,我需要第一行保留为字符串

Declare @ReportingPeriod Varchar(100) SET @ReportingPeriod = ('2016,2017,2018')

Declare @Start Varchar(4) = Left(@ReportingPeriod,4)
Declare @Years int =        CASE WHEN len(@ReportingPeriod)=4 THEN 1
                                WHEN len(@ReportingPeriod)=9 THEN 2 ELSE 3 END
Declare @End Varchar(4) =   CASE WHEN @Years=1 THEN @Start+1 
                                WHEN @Years=2 THEN @Start+2 ELSE @Start+3 END -- 
Declare @StartDate date = Concat(@Start,'0501')
Declare @EndDate date =     CASE WHEN @Years=1 THEN Concat(@End,'0430')
                                WHEN @Years=2 THEN Concat(@End-1,'0430') 
                                WHEN @Years=3 THEN Concat(@End-2,'0430') END

Declare @StartDate2 date =  CASE WHEN @Years=1 THEN Null
                                WHEN @Years in (2,3) THEN Concat(@Start+1,'0501') END
Declare @EndDate2 date =    CASE WHEN @Years=1 THEN Null 
                                WHEN @Years=2 THEN Concat(@End,'0430')
                                WHEN @Years=3 THEN Concat(@End-1,'0430')END
Declare @StartDate3 date =  CASE WHEN @Years=1 THEN Null 
                                WHEN @Years=2 THEN Null ELSE Concat(@Start+2,'0501')END
Declare @EndDate3 date =    CASE WHEN @Years=1 THEN Null 
                                WHEN @Years=2 THEN Null ELSE Concat(@End,'0430')END

0 个答案:

没有答案