过滤数据集上的多值参数

时间:2017-07-14 07:08:46

标签: reporting-services parameter-passing ssrs-2012

所以我有一个多值参数而不是包含3个选项。 > 250K,<250K,> 2M。 我还有一个由多列组成的表。 Image 1 Image 2。因为参数是多值的,所以我很难过滤数据集。

我需要通过检查过滤数据集,(如果选择&gt; 250K,相应地过滤数据集),(如果选择&lt; 250K,相应地过滤数据集)和(如果选择&gt; 2M,则过滤相应的数据集)。

我被告知在(>&gt; 250K条件下使用连接并拆分参数,然后执行包含以查看它是否包含任何参数值)但是我的编码知识不是很先进能够做到这一点。

有什么建议吗?在此先感谢

我之前尝试过以下方法,但随后我开始意识到它不会起作用,因为参数是一个多值。

enter image description here

4 个答案:

答案 0 :(得分:2)

如果要使用多参数,可以在数据集中使用JOIN读取参数值。

示例:

如果要在以下示例中给出的数据集中读取@MyParamter的多个值:

数据集参数 enter image description here

您需要使用=JOIN(Parameters!myMultiParamter.Value,",")作为表达式来读取CSV格式的所有选定值。

<强>表达式 enter image description here

现在@ParameterValues参数将所有选定的值都作为逗号分隔值,您可以根据设计要求在数据集代码中使用它们。

注意:没有必要使用逗号,但是您可以使用任何想要分隔值的内容。

答案 1 :(得分:2)

我知道自从你提出这个问题已经有一段时间了,你是在正确的轨道上但是你需要做的就是在你要过滤的字段上为Tablix添加一个过滤器,使用&#39; in&# 39;运算符和值类型[@Yourparametername]中的方括号和区分大小写非常重要。还要确保表达式类型正确,在您的情况下,它看起来像是在使用Integer。该图片应该有所帮助。Tablix

答案 2 :(得分:0)

你的SQL查询应该在哪里看起来像

Where
(
(0 IN (@Parameter) AND ValueColumn<250000)
OR
(1 IN (@Parameter) AND ValueColumn>=250000)
OR
(2 IN (@Parameter) AND ValueColumn>=2000000)
)

一个参数

enter image description here

两个参数

enter image description here

所有参数

enter image description here

答案 3 :(得分:0)

返回值后,您还可以使用charindex或patindex *并查找where子句中的值在哪里是索引编号为> 0的模式。例如,如果从SSRS返回的字符串是'01,02,03',则您的where子句具有类似right(field, 2)的内容,则该值将产生值'03'。您将where子句更改为where patindex('%' + right(field, 2) + '%', @returnedstring) > 0,它将为您提供结果。使您不必在SQL代码中解析@returnedstring参数。