SSRS过滤表达式

Alf*_*meo 3 reporting-services

我从下面的DataSet绘制图表

Owner        Ver
A            1.1
A            1.2
A            1.3
B            1.1
B            1.2
C            1.1
Run Code Online (Sandbox Code Playgroud)

在图表中,我需要的是一个表达式,用1.1和1.2过滤A和1.1和1.2并且休息,因此数据将具有

Owner        Ver
A            1.1
B            1.1
B            1.2
C            1.1
Run Code Online (Sandbox Code Playgroud)

Ian*_*ton 8

根据您的特定要求,您可以在图表上设置过滤器,如下所示:

在此输入图像描述

表达式是:

=IIf(
    (Fields!Owner.Value <> "A" and Fields!Owner.Value <> "B")
    or (Fields!Owner.Value = "A" and Fields!Ver.Value = 1.1)
    or (Fields!Owner.Value = "B" and Fields!Ver.Value = 1.1)
    or (Fields!Owner.Value = "B" and Fields!Ver.Value = 1.2)
  , "INCLUDE"
  , "EXCLUDE"
)
Run Code Online (Sandbox Code Playgroud)

这给出了您所需的结果:

在此输入图像描述

但是,这根本不可扩展,因为随着存在更多要求,您将不得不使表达式变得越来越复杂 - 如在其他当前答案中所提到的,如果可能的话,考虑在存储过程中应用基于参数输入的过滤可能是值得的.

但如果您有非常具体的要求,上述情况应该没问题.

评论后编辑

要明确排除而不是包含你可以使用完全相同的东西,只需翻转逻辑.

假设您要排除以下组合:

A -> 1.2
A -> 1.3
B -> 1.3
Run Code Online (Sandbox Code Playgroud)

您只需将表达式更改为以下内容:

=IIf(
    (Fields!Owner.Value = "A" and Fields!Ver.Value = 1.2)
    or (Fields!Owner.Value = "A" and Fields!Ver.Value = 1.3)
    or (Fields!Owner.Value = "B" and Fields!Ver.Value = 1.3)
  , "EXCLUDE"
  , "INCLUDE"
)
Run Code Online (Sandbox Code Playgroud)

这给出了与上面相同的结果.