我有一个带有输入参数P_Region的报告,允许用户选择1- *选项。然后,我需要将此参数的结果传递给DataSet查询。如果我只选择一个选项但是如果我选择两个选项则不行。
我有什么:
它的DataSet参数设置为:
= join(参数!P_Region.Value,",")
查询是:
在哪里......和D.City IN(@P_Region)
我尝试了几件不同的事情,也没有运气:
=分割(参数!Item.Value,",")
=分段(加入(Parameters!@ReportParameter1.Value,""),"")
在哪里D.Region IN(SELECT * FROM dbo.split(@Department))没有运气。
非常感谢任何帮助!
解决方案:(抱歉,我觉得这是一个非常简单的解决方案,但我没有在网上看到它,而且我是SSRS的超级新手)
注意:了解查询仍将返回其他记录,但只会过滤它们。如果您要返回大量数据并且使用的数据很少,这可能不是最佳选择。
答案 0 :(得分:1)
我认为你在WHERE D.Region IN(SELECT * FROM dbo.split(@Department))的正确轨道上没有运气。
我使用tabled值函数来创建过滤表并在那里解析值。
WHERE D.Region IN (SELECT ID FROM dbo.CreateIntIDTable(@Department))
ALTER FUNCTION [dbo].[CreateIntIDTable](@IDList NVARCHAR(3000))
RETURNS @T TABLE (ID INT)
AS BEGIN
WHILE(CHARINDEX(',',@IDList)>0)BEGIN
INSERT INTO @T
SELECT LTRIM(RTRIM(SUBSTRING(@IDList,1,CHARINDEX(',',@IDList)-1)))
SET @IDList = SUBSTRING(@IDList,CHARINDEX(',',@IDList)+LEN(','),LEN(@IDList))
END
INSERT INTO @T SELECT LTRIM(RTRIM(@IDList))
RETURN
END
答案 1 :(得分:0)
尝试为您的选择下拉列表创建单独的数据集,然后您可以使用where where条件。
代表
1)数据集(SELECT Company FROM Companymaster ORDER BY Company)
2)在哪里 公司(@CompanyName)
答案 2 :(得分:0)
您是否设置了参数属性以接受多个值? 如果属性设置正确,则无需执行任何“加入”或“拆分”功能。