【发布时间】:2015-07-24 06:47:29
【问题描述】:
(已编辑清理)
我有一个带有多值参数的 SSRS 报告。我需要的是参数的每个值都与“where”子句中的条件相对应。
所以我的查询是这样的:
select stuff,...
WHERE
column A != column B OR
column C != column D OR...
一直这样下去。只有在不同的列对之间存在差异时才给出结果。
所以希望我描述得很好。因此,例如,如果上面是我的 where 子句,我希望参数具有如下值:
“A 和 B 的区别” “C&D的区别”
并且能够选择多个......所以只有用户选择的那些被合并。
编辑 - 部分解决方案 ******************************************* ***
好的,我有逻辑,感谢汉诺威拳头的正确方向,我想出了这个:
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
……等等……
这样,如果未选择参数,则 where 子句的那部分会查找该列不等于自身的结果——所以当然没有……
但是,仍然存在一个问题。如果我只选择 1 个参数值,这在 SSRS 中有效,但如果我选择多个,我会收到错误“charindex 函数需要 2 到 3 个参数”。 >-(
我部署了它,但它吐出的东西略有不同:
参数数据类型 nvarchar 对 charindex 函数的参数 3 无效
SSRS 对此的处理方式是 fladdoodle,但我不确定是什么。
【问题讨论】:
-
您能否在您的问题中提供您的实际查询,或者至少提供您想要的实际 where 子句?
-
好的。我想不出一种方法来使用我头顶上的一个多选参数来做到这一点。有多少比较,它总是一个固定的数字吗?
-
大约有 20 次比较,不,不是一个固定的数字。它正在检查在多个字段中输入的数据,以查看特定步骤中是否存在差异。每个文档的所有数据都在一行中......所以基本上我选择了一行并寻找用户选择的任何列的差异(每个键控字段都有不同的列供其他人键控) .一些丑陋的旋转可能是可行的,但我相当肯定这会扼杀我的大脑和性能,呵呵。
标签: reporting-services parameters where