您好我在SSRS表达式
中运行以下嵌套if语句时遇到问题= SUM(IIF(UCASE(TRIM(Fields!UOP.Value))="Y", IIF(UCASE(TRIM(Fields!HED.Value))="Y",
IIF(UCASE(TRIM(Fields!FROMB.Value))="RED",
IIF(UCASE(TRIM(Fields!TOB.Value))="BLUE",1,0),0),0))
不确定我的括号是否在正确的位置......
基本上我只想在所有if语句都为真的情况下找到表达式的总和,并且其他值不是。
答案 0 :(得分:1)
让我们剖析你的陈述:
=SUM(
IIF(UCASE(TRIM(Fields!UOP.Value))="Y",
IIF(UCASE(TRIM(Fields!HED.Value))="Y",
IIF(UCASE(TRIM(Fields!FROMB.Value))="RED",
IIF(UCASE(TRIM(Fields!TOB.Value))="BLUE",
1,
0),
0),
0)
)
您的括号不平衡,并且您错过了第一个IIF
的 false 参数。
或者,您可以反转您的条件并使用SWITCH
代替,这会更容易阅读:
=SUM(Switch( _
UCASE(TRIM(Fields!UOP.Value))<>"Y", UOPFalseValue, _
UCASE(TRIM(Fields!HED.Value))<>"Y", 0, _
UCASE(TRIM(Fields!FROMB.Value))<>"RED", 0, _
UCASE(TRIM(Fields!TOB.Value))<>"BLUE", 0, _
True, 1))
或者,由于您的 false 值始终为0,因此您只需使用And
组合条件:
=SUM(IIF(And(And(And(UCASE(TRIM(Fields!UOP.Value))="Y", _
UCASE(TRIM(Fields!HED.Value))"Y"), _
UCASE(TRIM(Fields!FROMB.Value))="RED"), _
UCASE(TRIM(Fields!TOB.Value))="BLUE"), 1, 0))