【发布时间】:2017-05-24 18:46:26
【问题描述】:
一段时间以来,我一直试图让这个函数在 SQL Server Reporting Studio 2014 中工作,但通过大量搜索我无法在此处找到解决方法。
我对 SSRS 还很陌生,但我发现在 2014 年您无法在它们之间创建带有 OR 的过滤器(以前在早期版本中是可能的)。我有一种情况,我想使用单个多值参数 (@IDs) 来检查一个值是否存在于同一个表的 4 个单独的列(ID 1、ID 2、ID 3 和 ID 4)中。
理论上,这将是:
WHERE [ID 1] IN @IDs
OR [ID 2] IN @IDs
OR [ID 3] IN @IDs
OR [ID 4] IN @IDs
如果参数中有单个值输入,则此方法有效。但是,当参数有多个值或为空白('')时,这显然不起作用。在其他参数中,我使用表达式:
[column_name] IN =IIF(Parameters!parameter.Value(0) = "",Fields!column_name.Value,Parameters!parameter_name.Value)
这为我在检查单个列时提供了正确的结果。我还没有找到一种方法将其转换为我需要对 4 列进行其他参数检查的方法。
总而言之,如果@IDs = '',则返回数据集中的所有行,否则检查 [ID 1]、[ID 2]、[ID 3] 或 [ID 4] 中的有效值并返回正确的行。
有答案的更新
Alan Schofield 提供了下面的大部分答案,并进行了一些进一步的调整。数据集查询应如下所示:
SELECT *
FROM myTable
WHERE
('' IN (@IDs) OR
[ID 1] IN (@IDs) OR
[ID 2] IN (@IDs) OR
[ID 3] IN (@IDs) OR
[ID 4] IN (@IDs))
【问题讨论】:
标签: sql-server reporting-services sql-server-2014 ssrs-2014