在没有存储过程的情况下将多值参数传递给SSRS中的变量

Passing a multi-value parameter into a variable in SSRS without a stored procedure

我无权访问 sp,但我创建了一个动态查询,它将接受一个多值参数,将其传递给一个变量,然后该变量将在查询中使用。我的查询的简短示例。

DECLARE @Parameter2 varchar(200)
SET @Parameter2 = @Parameter1

SELECT personID from foo where filename IN (@Parameter2)

我有一个 @Parameter1 的报告参数,它将允许多个值,这些值将来自数据集的另一个查询。我可以将单个文件名从 @parameter1传递给 @parameter2没有任何问题,但是选择多个文件时,我会得到“无效的语法在...',',因为参数像这样传递了'filename1,filename2,filename3'。[= = = = = = 11=]

如何将这些多个参数从@Parameter1 解析为@Parameter2,以便它可以在没有存储过程的查询中使用?我已尝试在此处查看不同的主题并将 @Parameter1 拆分为“,”并在数据集属性中加入变量,但我仍然遇到无效语法错误或声明标量变量错误。

我在SQL服务器方面经验不多,但在预览中选择字符串后似乎很难拆分,如果字符串不先通过 sp。

既然你可以做 DYNAMIC SQL,请考虑以下内容

DECLARE @Parameter1 varchar(200) = 'filename1,filename2,filename'

DECLARE @Parameter2 varchar(200) = ''''+Replace(@Parameter1,',',''',''')+''''

Declare @SQL varchar(max) = 'SELECT personID from foo where filename IN ('+@Parameter2+')'
Exec(@SQL)

生成的 SQL 看起来像这样:

SELECT personID from foo where filename IN ('filename1','filename2','filename')