2016-10-24 54 views
0

感謝以前的海報,自從我發佈最初的問題以來,我不得不修改報告,所以這是一個修改。級聯參數 - 是否可以跳過參數?

我想創建一個使用級聯參數的報告。我在'LocalAuthority'參數中添加了一個'All'選項,但當它移動到@ward參數時不會返回任何值。
enter image description here

這是參數的標準是如何在我的「主數據」存儲過程中設置

WHERE [county] = @county 

      AND [LocalAuthority] = @LocalAuthority 

        AND CHARINDEX (','+Ward+',', ','[email protected]+',') > 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

您可以將「@ LocalAuthority」的默認值設置爲與可用值中使用的數據集相同。因此,如果您在默認情況下未在「@ LocalAuthority」中選擇任何值,則它將以數據集中定義的所有值運行。 –

+0

@alejandrozuleta這不僅適用於多值參數嗎?從問題中提到一個'All'選項被添加到'@ City'時,這將表明這些是單值的。 – iamdave

+0

你可以做的一件事就是創建一個額外的參數並將其設置爲隱藏,以檢查是否所有的@City =「如果是這樣」,則返回「@ LocalAuthority」選擇。 –

回答

1

如果你的局部視圖正在使用單值參數,我會建議使用數據集填充您的參數,並讓該數據集只需檢查參數@City中的All,然後ret如果選擇All,則輸入一個值,例如Ignore。在您的主數據集中,您使用case語句返回IGNORE時返回所有的LA。

您可以使用類似的查詢下面的東西到指定@LocalAuthority值列表和設置的默認值IGNORE這將填充(如果可用),並且需要來自Las列表中用戶選擇如果不能。這樣,如果您忽略了LAs,則不需要用戶交互:

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