SSRS多值参数问题

时间:2017-04-24 14:39:29

标签: sql-server ssrs-2008-r2

我有一个参数将这些值传递给存储过程:

" CA,FL,NY,NJ,MA,CT,RI"。

我遇到的问题是,如果我选择" ALL"选项它不会带回任何" CT"值。它确实带回了CT"如果我单独选择它。我注意到没有#34; MA"所以我不知道这是否与它有关。

我在SQL中使用逗号分隔的拆分器解析值。

另外,有没有人知道如何测试SQL Server中的参数以查看它实际传递的值是什么?

存储过程如下:

CREATE PROCEDURE plicense
(@division VARCHAR(500))
AS
SELECT a.lastname,
a.firstname,
b.divisionname
from Table A
INNER JOIN Table B
ON A.practid = B.practid
WHERE B.divisionname in (SELECT item from dbo.fnsplit(@division, ','))

SSRS参数由一个如下所示的存储过程填充:

SELECT DISTINCT divisionid,
divisionname
FROM TABLE A
UNION
SELECT -1, 'N/A'    

2 个答案:

答案 0 :(得分:0)

问题出在SSRS上。我需要将它添加到主存储过程的参数部分:= join(参数!division.Value,“,”)。

答案 1 :(得分:-1)

创建一个将数据分隔为表

的函数
CREATE FUNCTION [dbo].[Split]
(
    @List NVARCHAR(2000),
    @SplitOn NVARCHAR(5)
)  
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 column in (select dbo.split (@param))