40

任何人都可以建议在表过滤器中使用 IN 运算符时的语法应该是什么。我尝试了以下方法,但语法错误:

在此处输入图像描述

4

17 回答 17

47

我也遇到了一些麻烦。Microsoft自己的文档指出,值框中的简单逗号分隔值列表应该可以工作。这令人困惑,因为它没有。至少它不适合我,我正在使用 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

于 2013-12-10T22:46:18.697 回答
21

这实际上有效:

=CStr("Value1,Value2,Value3,Value4,etc").Split(",")

这在 SSRS 2012 中进行了测试。

于 2014-04-13T22:51:59.967 回答
21

如果您只是更改Value属性并添加一个逗号分隔的应该起作用的值列表:

在此处输入图像描述

无论如何,这在快速测试中对我有用。

Books Online 的示例似乎很简单,但我确实找到了一个参考;请参阅常用过滤器In中的示例。如果能更好地解释这一点,那就太好了。

于 2013-11-07T16:20:26.967 回答
6
"value1" "value2"

一个空格,没有逗号对我有用。好笑的是,回去看测试的时候,显示为

value1, value2

带逗号,不带引号。如果我将其剪切,然后将其直接粘贴回同一字段,则不起作用。这是一些错误的狗屎就在这里。

基础数据类型是 nvarchar(10),而不是 null

经 VS 2017 和 SSRS 2016 测试

于 2018-07-25T23:25:51.210 回答
4

If the recommended solution somehow doesn't work for you, try using a semicon as a seperator.

Example: criteria one; criteria two

It worked for me.

于 2014-07-14T08:22:56.380 回答
4

从表达式中删除前导=,即

"criteria one" , "criteria two"
于 2014-03-11T06:13:43.473 回答
2

这在 SSRS 2012 中对我有用。

“标准一”、“标准二”

于 2014-02-06T22:42:31.400 回答
2

对于整数值,您可以使用:

类型:文本

运营商:在

值:=新整数(){8800,8820}

应该适用于 2008 R2 和更新版本

于 2017-02-02T13:34:36.497 回答
2

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 读取选定的数据并显示正确的行数。

于 2019-05-07T03:41:51.703 回答
1

对于整数值,这对我有用:

  • 表达式:MyNumber
  • 运营商:在
  • 值:10;12; 124

见图片链接:

在此处输入图像描述

于 2021-05-28T15:45:33.717 回答
1

经过多次尝试,我的问题终于解决了,只使用了这种方法。

表达:

=InStrRev(带分隔符的完整字符串要搜索的值)

类型:整数

操作员: <>

值: 0

于 2016-11-17T16:48:49.430 回答
0

通用解决方案:

表达式:[列名]

运营商:在

值:[@ parameterName ]

于 2019-10-07T17:20:50.117 回答
0

将此查询输入到表达式中:

=Join(Parameters!MultiValueParam.Value)
于 2015-10-15T17:37:50.133 回答
0

可能我使用的是最新版本的 SSRS。值类型是text。对我来说,

"criteria 1";"criteria 2";...;"criteria N"

双引号是强制性的。

于 2018-08-29T23:38:32.753 回答
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>
于 2021-04-06T00:47:39.587 回答
0

我的价值观包括正斜杠。我能让 SSRS 的In      ▼操作员正确处理它们的唯一方法是使用表达式=CStr("google / cpc,bing / cpc").Split(",")

于 2015-12-03T14:17:10.920 回答
-3

在此处输入图像描述

每个数值之间的每个间隔都需要一个空格。它工作正常

于 2017-08-07T12:37:34.437 回答