问题描述
我正在使用报表生成器,并且想要针对标签添加多个值(可用值 > 指定值):
示例:
Label = "labelone" Value = Value1,Value2...
当我运行报告时,我收到一条消息,指出 Parameter1 丢失。
我尝试了以下针对 value:Value1、Value2 和 'Value1'、'Value2'
我的查询在 where 子句中有以下内容:WHERE (FIELD in (@Parameter1))
谢谢
解决方法
您不能直接执行此操作,因为将传递给查询的内容是
WHERE Field IN ('Value1,Value2')
或
WHERE Field IN ('''Value1'',''Value2''')
这样做的方法是使用表值函数拆分标签,如果您拥有相当新版本的 SQL Server(我认为这是在 SQL2016 中引入的),则可以使用 string_split。如果您有旧版本,则可以使用大量字符串拆分函数示例。
一旦你有了你的函数,你就可以加入它的结果,查询将类似于
DECLARE @pValues TABLE (myValues varchar(10))
INSERT INTO @pValues
SELECT * FROM string_split(@myReportParameter,',')
SELECT *
FROM myTable a
JOIN @pValues p on a.Field = p.myValues