WHERE 子句中的 SSRS 参数值

SSRS Parameter values in WHERE clause

(编辑清理)

我有一个包含多值参数的 SSRS 报告。我需要的是参数的每个值都对应于 "where" 子句中的条件。

所以我的查询是这样的:

select stuff,...

WHERE

column A != column B OR
column C != column D OR...

就这样一直往下。只有当不同的列对之间存在差异时才给出结果。

所以希望我描述得很好。因此,例如,如果上面是我的 where 子句,我希望参数具有如下值:

"Difference between A & B" "Difference between C & D"

并且能够 select 多个...因此只有用户 select 的那些被合并。

编辑 - 部分解决方案 ****************************************** *****

好的,我有逻辑,多亏了汉诺威拳头的正确指导,我想出了这个:

WHERE
col 1 <> CASE WHEN CHARINDEX("Where1",@Parameter) = 0 THEN col 1 ELSE col 2 END OR  
col 3 <> CASE WHEN CHARINDEX("Where2",@Parameter) = 0 THEN col 3 ELSE col 4 END 

...等等.....

这样,如果参数未被 selected,where 子句的那部分将查找该列不等于其自身的结果——所以 none,当然.. .

但是,还有一个问题。如果我只选择 1 个参数值,这在 SSRS 中有效,但如果我选择多个参数值,我会收到错误 "charindex function requires 2 to 3 arguments." >-(

我部署了它,它吐出的东西略有不同:

参数数据类型 nvarchar 对于 charindex 函数的参数 3 无效

关于 SSRS 对此的处理方式有点乱,但我不确定是什么。

我不太明白你是如何尝试做到这一点的。

如何在 SQL 中包含 WHERE 子句并使用参数来确定是否使用了 WHERE 的那部分?这可能不是您真正需要的,但应该让您了解我的意思。

WHERE (ColA <> ColB or CHARINDEX("Where1", @Parameter) = 0)

您的参数会将 Where1 作为选择之一(对于 Value - Label 可能更具描述性)。如果选择它,CHARINDEX 结果将 not0ColA < > ColB 条件需要为真才能显示该记录。

为您需要的每个 parameter/WHERE 组合重复。

知道了。
如上编辑,此代码有效(从汉诺威拳头向这个方向的帮助推动):

WHERE  
col 1 <> CASE WHEN CHARINDEX("Where1",@Parameter) = 0 THEN col 1 ELSE col 2 END OR
col 3 <> CASE WHEN CHARINDEX("Where2",@Paremeter) = 0 THEN col 3 ELSE col 4 END

等...

参数问题对我来说是新的经验,但简单地说(不经常这样做——因此我的困难:-P),SSRS 包括参数值之间的逗号(这是有道理的,因为我们可以使用IN语句如 WHERE 列 IN (@Parameter)

这就是为什么当我选择了多个时它会抱怨的原因。在这里合并优秀的选择答案:

Passing multiple values for a single parameter in Reporting Services

解决了剩下的问题:)

当您将多值参数传递给数据集时 使用表达式

加入多值参数
= JOIN(Parameters!multivalue parameter.Value,",")