我从下面的DataSet绘制图表
Owner Ver
A 1.1
A 1.2
A 1.3
B 1.1
B 1.2
C 1.1
在图表中,我需要的是一个表达式,用1.1和B过滤A和1.1和1.2并休息 因此数据将具有
Owner Ver
A 1.1
B 1.1
B 1.2
C 1.1
答案 0 :(得分: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"
)
这给出了与上面相同的结果。
答案 1 :(得分:1)
你是否特别需要(1.1,1.2)中的A = 1.1和B?否则,您可以使用minimum()运算符来查找结果。事实上,看起来你需要为B使用WHERE逻辑,否则你无法得到你想要的结果。
关键点在于您需要为所有者字段设置不同的逻辑,但数据不支持您想要执行的操作。如果您使用PROC SQL命令进行编码,则可以使用CASE语句并强制执行结果,但这最终是一个糟糕的设计选择。