所以我有一个多值参数而不是包含3个选项。 > 250K,<250K,> 2M。 我还有一个由多列组成的表。 。因为参数是多值的,所以我很难过滤数据集。
我需要通过检查过滤数据集,(如果选择&gt; 250K,相应地过滤数据集),(如果选择&lt; 250K,相应地过滤数据集)和(如果选择&gt; 2M,则过滤相应的数据集)。
我被告知在(>&gt; 250K条件下使用连接并拆分参数,然后执行包含以查看它是否包含任何参数值)但是我的编码知识不是很先进能够做到这一点。
有什么建议吗?在此先感谢
我之前尝试过以下方法,但随后我开始意识到它不会起作用,因为参数是一个多值。
答案 0 :(得分:2)
如果要使用多参数,可以在数据集中使用JOIN
读取参数值。
示例:强>
如果要在以下示例中给出的数据集中读取@MyParamter
的多个值:
您需要使用=JOIN(Parameters!myMultiParamter.Value,",")
作为表达式来读取CSV格式的所有选定值。
现在@ParameterValues参数将所有选定的值都作为逗号分隔值,您可以根据设计要求在数据集代码中使用它们。
注意:没有必要使用逗号,但是您可以使用任何想要分隔值的内容。
答案 1 :(得分:2)
我知道自从你提出这个问题已经有一段时间了,你是在正确的轨道上但是你需要做的就是在你要过滤的字段上为Tablix添加一个过滤器,使用&#39; in&# 39;运算符和值类型[@Yourparametername]中的方括号和区分大小写非常重要。还要确保表达式类型正确,在您的情况下,它看起来像是在使用Integer。该图片应该有所帮助。
答案 2 :(得分:0)
你的SQL查询应该在哪里看起来像
Where
(
(0 IN (@Parameter) AND ValueColumn<250000)
OR
(1 IN (@Parameter) AND ValueColumn>=250000)
OR
(2 IN (@Parameter) AND ValueColumn>=2000000)
)
一个参数
两个参数
所有参数
答案 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
参数。