级联参数 - 您是否可以跳过参数?

时间:2016-10-24 11:03:51

标签: reporting-services ssrs-2008 ssrs-2012

感谢您之前的海报,自从我发布初步问题以来,我不得不调整报告,所以这是一个编辑。

我正在尝试使用级联参数创建报告。我在'LocalAuthority'参数中添加了'All'选项,但在转到@ward参数时没有返回任何值。
enter image description here

这是我的“主数据”存储过程

中设置参数标准的方式
WHERE [county] = @county

            AND [LocalAuthority] = @LocalAuthority 

                     AND CHARINDEX  (','+Ward+',', ','+@Ward+',') > 0

这是我对LocalAuthority

的存储过程的部分视图
 SELECT * FROM 

         (

                  select distinct


                     LocalAuthority,
                     county               
                     from tableA 



                    where [county] like 'essex'


                union all 


                select distinct

                    LocalAuthority,
                    county             
                    from tableA 



                  where county like 'kent' 


                union all

                    select distinct

                       'All' as LocalAuthority,
                       'CountyWide' as county      

                      from tableA 

                    )a

WHERE 

    LocalAuthority = @LocalAuthority 

1 个答案:

答案 0 :(得分:1)

如果您使用单值参数,我建议使用数据集填充参数,并让该数据集只检查All参数中的@City并返回一个值,例如{{1如果选择了Ignore。在主数据集中,使用All语句返回IGNORE时返回所有LA。

您可以使用与下面的查询类似的内容来指定您的case值列表,并将默认值设置为@LocalAuthority,如果可用则填充该IGNORE,如果没有,则需要用户从LA列表中进行选择。这样,如果您忽略了您的LA,则不需要用户交互:

declare @City nvarchar(50) = 'a';

declare @LAs table (LA nvarchar(50));
insert into @LAs values
 ('Birmingham')
,('Grenwich')
,('Exeter')


select distinct case when @City = 'All'
                    then 'IGNORE'
                    else LA
                    end as LocalAuthorities
from @LAs


set @City = 'All';

select distinct case when @City = 'All'
                    then 'IGNORE'
                    else LA
                    end as LocalAuthorities
from @LAs