嵌套的IIF语句产生3个结果中的1个

时间:2016-02-10 04:02:23

标签: reporting-services expression ssrs-2008-r2 iif

我正在尝试拼凑一个嵌套的" IIF"声明产生三个值中的一个,但我的行不起作用

=IIF(Fields!LeaseNumber.value = "", "Vacant",Fields!tenantName.value) AND (IIF(Fields!tenantName.Value ="",Fields!LeaseDBA.Value, Fields!tenantName.Value))

我的预期结果应该是:

如果没有租约# - "空缺"

如果没有租户名称 - " LeaseDBA"

所有其他行只是给我 - " tenantname"

我审查的所有其他问题似乎都与这种类型的IIF条款相匹配。 任何帮助真的很感激。

2 个答案:

答案 0 :(得分:2)

我实际上最近刚试图揭示IIF表达式如何工作以及如何嵌套它们。 http://codepen.io/anon/pen/JGwjXZ

要检查某个值是空还是空,您最好使用以下功能之一:

  • 您可以使用IsNothing()检查是否有值。应用于您的示例将导致:

    =IIF(IsNothing(Fields!LeaseNumber.value)
    ,"Vacant" 
    ,IIF(IsNothing(Fields!tenantName.Value), Fields!LeaseDBA.Value, Fields!tenantName.Value))
    
  • 您可以使用Len()计算值的长度,然后检查它是否大于0.

    =IIF(Len(Fields!LeaseNumber.value) > 0 
    ,IIF(Len(Fields!tenantName.Value) > 0, Fields!tenantName.Value, Fields!LeaseDBA.Value)
    ,"Vacant" )
    

答案 1 :(得分:0)

如果没有租约# - “空置”(如果没有LeaseNumber则显示“空置” - 仅限字符串)

如果没有tenantName - “LeaseDBA”(如果没有tenantName则显示Fields!LeaseDBA.Value

对于其他行,只需给我Fields!tenantName.Value

如果您想要,请尝试以下表达式。

IIF(Trim(CStr(Fields!LeaseNumber.Value))="","Vacant",CStr(Fields!tenantName.Value)) & IIF(Trim(CStr(Fields!tenantName.Value))="",Fields!LeaseDBA.Value,CStr(Fields!tenantName.Value))