2014-07-24 106 views
0

我在我的報告中有一個嵌入數據集,它將參數傳入。數據集中的SSRS多值參數查詢問題

這工作得很好單個選擇使用等號(=)在我和線路 我會想到的和谷歌的結果似乎在說同樣的,我可以只改變=登錄到「IN」

FROM [database].[dbo].[itemTable] 
right Outer Join [database].[dbo].[CategoryTable] 
    on [database].[dbo].[itemTable].Category= [database].[dbo].[CategoryTable].Category And ([database].[dbo].[itemTable].Region = @pRegion) And ([database].[dbo].[itemTable].CategoryLN = @pCategoryLN) 
where [database].[dbo].[CategoryTable].Category != 'RETIRED' 

以上工作正常,但如果我改變

[database].[dbo].[itemTable].Region IN @pRegion' 

查詢窗口說附近有語法錯誤@pRegion「。

回答

1

看起來你缺少的是括號圍繞參數。

[database].[dbo].[itemTable].Region IN (@pRegion) 

另外請確保您不編輯/解析參數值。

+0

doh! :)感謝隊友以及我很高興這是我瞭解的一些事情! – user3641778

1

我們已經通過使用數據庫表值函數解決了這個問題(可能是某個地方找到在互聯網上,但我不記得在哪裏)

CREATE FUNCTION [database].[dbo].[ParamSplit] 
    (
     @List nvarchar(max), -- string returned from multivalue report parameter 
     @SplitOn nvarchar(5) -- separator character 
    ) 
    RETURNS @RtnValue table 
    (

     Id int identity(1,1), 
     Value nvarchar(100) 
    ) 
    AS 
    BEGIN 
     While (Charindex(@SplitOn,@List)>0) 
     Begin 
     Insert Into @RtnValue (value) 
     Select Value = ltrim(rtrim(Substring(@List,1,Charindex(@SplitOn,@List)-1))) 
     Set @List = Substring(@List,Charindex(@SplitOn,@List)+len(@SplitOn),len(@List)) 
     End 

     Insert Into @RtnValue (Value) 
     Select Value = ltrim(rtrim(@List)) 
     Return 
    END 

然後你就可以在你的數據集查詢使用。

where [database].[dbo].[itemTable].Region IN (Select [dbo].[ParamSplit].[Value] from [database].[dbo].[ParamSplit](@pRegion,','))