嵌套在SSRS中的语句

时间:2013-07-29 00:44:41

标签: reporting-services ssrs-2008

您好我在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语句都为真的情况下找到表达式的总和,并且其他值不是。

1 个答案:

答案 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))