任何人都可以建议在表过滤器中使用IN运算符时的语法。 我尝试过以下但是snytax错了:
答案 0 :(得分:37)
我也遇到过这个问题。微软own documentation表示值框中的一个简单的逗号分隔值列表应该有效。这很令人困惑,因为它没有做到。至少它对我来说没有,我正在使用SSRS 2012和Visual Studio 2010。
事实证明,当您使用IN运算符时,SSRS期望一组值。有许多方法可以使这个过滤器工作。以下示例旨在在表达式编辑器中输入。
第一种方式(也就是下面链接的博客中解释的方式)是在字符串值中键入逗号分隔列表,然后在其上使用split函数。
=split("2B,2C",",")
或者您可以从多值参数派生列表。多值参数已经是一个数组,所以你要做的就是通过参数表达式引用它,如下所示。
=Parameters!MultiValueParam.Value
我通过以下博客发现了这些信息。 http://sqlblogcasts.com/blogs/simons/archive/2007/11/20/RS-Howto--Use-the-IN-operator-in-a-filter-expression.aspx
答案 1 :(得分:14)
如果您只是更改值属性,只需添加一个逗号分隔的值列表,该列表应该有效:
无论如何,这对我来说是一个快速测试。
联机丛书似乎对示例非常清楚,但我找到了一个参考文献;请参阅Commmonly Used Filters中的In
示例。如果更好地解释这将是很好的。
答案 2 :(得分:13)
这实际上有效:
=CStr("Value1,Value2,Value3,Value4,etc").Split(",")
这是在SSRS 2012中测试的。
答案 3 :(得分:4)
如果推荐的解决方案不适合您,请尝试使用semicon作为分隔符。
示例:标准一;标准二
它对我有用。
答案 4 :(得分:2)
这在SSRS 2012中对我有用。
“标准一”,“标准二”
答案 5 :(得分:2)
从表达式中删除前导=
,即
"criteria one" , "criteria two"
答案 6 :(得分:2)
对于整数值,您可以使用:
类型:文字
接线员:
值:=新整数(){8800,8820}
应该适用于2008 R2和更新版本
答案 7 :(得分:1)
经过多次尝试后,我的问题终于解决了,只使用了这种方法。
<强>表达式:强>
= InStrRev(包含分隔符的完整字符串,要搜索的值)
输入:整数
运营商:&lt;&gt;
值: 0
答案 8 :(得分:1)
"value1" "value2"
只有一个空格,没有逗号对我有用。有趣的是,回到测试后,它显示为
value1, value2
,带逗号,不带引号。如果我将其剪切,然后将其直接粘贴回相同的字段,则无法使用。这是一些越野车。
底层数据类型为nvarchar(10),不为null
经过VS 2017和SSRS 2016的测试
答案 9 :(得分:0)
我的值包括正斜杠。我可以获得SSRS的在运算符中正确处理它们的唯一方法是使用表达式- name: Print car make
debug: msg="{{item.1}}"
with_subelements:
- brands
- makes
=
答案 10 :(得分:0)
将此查询输入表达式:
=Join(Parameters!MultiValueParam.Value)
答案 11 :(得分:0)
可能我正在使用SSRS的最新版本。值类型为文本。对我来说,
"criteria 1";"criteria 2";...;"criteria N"
双引号是必需的。
答案 12 :(得分:0)
OMG这么多答案...
我知道这可行:
1) MY SP returns VARCHAR(n) for the field I will filter in the tablix. Returning INT DOES NOT WORK in my solution. I don't know why (yet).
2) report.param.allow multiple values = true
3) tablix.filter.expression.datatype = text
4) tablix.filter.operator = IN
5) tablix.filter.value = =SPLIT(JOIN(Parameters!id.Value,","),",")
使用此方法,我能够调用一次SP,在参数中使用它来获取可用值,运行报告,然后tablix表从上面的步骤5中读取所选数据,并显示正确的行数
答案 13 :(得分:0)
通用解决方案:
表达式:[ columnName ]
操作员:在
值:[@ parameterName ]
答案 14 :(得分:0)
在 Visual Studio 2013 Premium 中,IN 运算符可以很好地处理多值参数:
=Parameters!MultiValueParam.Value
但是,当我想在我的集合中使用常量值时,我无法让 IN 操作符通过 UI 输入文本或表达式。
最终使用一组常量值的方法是进入代码视图并手动编辑我的过滤器。一组常量字符串“E”、“G”和“H”所需的 XML 是这样的:
<Filters>
<Filter>
<FilterExpression>=Fields!det.Value</FilterExpression>
<Operator>In</Operator>
<FilterValues>
<FilterValue>E</FilterValue>
<FilterValue>G</FilterValue>
<FilterValue>H</FilterValue>
</FilterValues>
</Filter>
</Filters>
答案 15 :(得分:0)
对于整数值,这对我有用:
查看图片链接:
答案 16 :(得分:-2)
每个数值之间需要一个空格。工作正常