創建函數的數據作爲表
分離:
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參數由一個存儲過程,看起來像這樣填充
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))
在其上運行一個sql分析器來查看運行的實際查詢。 – twothreebrent
發佈程序.... – scsimon
多值參數*不生成這樣的字符串。它們生成'IN(a,b,c)'子句。當你在@ ids中寫WHERE someID並指定@ id是一個多值參數時,SSRS會發送'WHERE someID in(id1,id2,id3)',其中'id1'等是由用戶 –