3

我从下面的数据集中绘制图表

Owner        Ver
A            1.1
A            1.2
A            1.3
B            1.1
B            1.2
C            1.1

在图表中,我需要一个表达式来过滤 A 与 1.1 和 B 与 1.1 和 1.2 和休息因此数据将有

Owner        Ver
A            1.1
B            1.1
B            1.2
C            1.1
4

2 回答 2

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"
)

这给出了您需要的结果:

在此处输入图像描述

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

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

评论后编辑

要显式排除而不是包含,您可以使用完全相同的东西,只需翻转逻辑即可。

假设您要排除以下组合:

A -> 1.2
A -> 1.3
B -> 1.3

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

=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"
)

这给出了与上述相同的结果。

于 2013-07-10T16:12:04.177 回答
1

您是否特别需要 (1.1, 1.2) 中的 A = 1.1 和 B?否则,您可以使用 minimum() 运算符来查找结果。实际上,您似乎需要对 B 使用 WHERE 逻辑,否则您将无法获得所需的结果。

症结在于您希望 Owner 字段具有不同的逻辑,但数据不支持您想要做的事情。如果您在 PROC SQL 命令中编码,则可以使用 CASE 语句并强制执行结果,但这最终是一个糟糕的设计选择。

于 2013-07-10T15:34:41.843 回答