我有一个客户想要将值列表放入 Reporting Services 中的参数中,将其与她数据库中的表进行比较,然后在下一个字段中返回值的完整列表,并在下一个字段中以是或否表示该值是否在数据库表。例如,如果她的列表是 Duck、Horse、Chicken,并且表中只存在 Duck,她希望结果如下所示:
Duck Yes
Horse No
Chicken No
她不想只返回那些匹配的值,所以一个简单WHERE Animal IN (@ReportParameter1)
的不会这样做。
我可以为这样的单个值参数工作:
DECLARE @FarmAnimals AS TABLE (Animal varchar(50))
INSERT INTO @FarmAnimals VALUES (@ReportParameter1)
SELECT Animal
,'In Barnyard’ = CASE WHEN EXISTS
(SELECT *
FROM tblBarnyard
WHERE BarnyardAnimal = Animal)
THEN 'Yes'
ELSE 'No'
END
FROM @FarmAnimals
但是是否可以遍历未指定长度的多值参数并为每个单独的值创建一个 INSERT INTO 语句?如果这是不可能的,我很高兴告诉她这是不可能的,但我想不出有什么时候我发现 SQL 中的某些东西是不可能的。