【问题标题】:Using IIF in SSRS在 SSRS 中使用 IIF
【发布时间】:2019-10-24 09:52:54
【问题描述】:

我正在尝试计算每个组的百分比值(逻辑是“A 组呼叫/总呼叫”)。

问题在于,对于某些组我需要使用 (MAX(Fields!OverallCalls.Value),而对于其他组我需要使用 (MAX(Fields!TotalCalls.Value)。因此,我添加了一个但是,由于某种原因,在最底部的附加 IIF 语句出现错误消息:“公共函数 IsNothing(Expression As Object) As Boolean 的参数太多”。

=FORMATPERCENT(
       Sum(
IIF(Fields!Group.Value = "Dissatisfactions Total",
       Fields!TotalDissatisfactions.Value,
IIF(Fields!Group.Value = "RID Total",
       Fields!TotalRidDissatisfactions.Value,
       IIF(
              Fields!Group.Value = "CRT" OR
              Fields!Group.Value = "Escalations"
              ,Fields!ComplaintID.Value
              ,IIF(
                           Fields!Group.Value = "Calls"
                           ,Fields!Calls.Value
                           ,0
                     )
       )
       )
       )  
       ) / IIF(IsNothing(MAX(Fields!OverallCalls.Value), (MAX(Fields!TotalCalls.Value), (MAX(Fields!OverallCalls.Value)
       )

【问题讨论】:

    标签: visual-studio-2010 visual-studio-2012 reporting-services ssrs-2008 ssrs-2012


    【解决方案1】:

    有缺少括号的错误。

    试试下面的代码

    =FORMATPERCENT(
    Sum(
        IIF(Fields!Group.Value = "Dissatisfactions Total",
            Fields!TotalDissatisfactions.Value,
            IIF(Fields!Group.Value = "RID Total",
                Fields!TotalRidDissatisfactions.Value,
                IIF(
                Fields!Group.Value = "CRT" OR Fields!Group.Value = "Escalations",
                    Fields!ComplaintID.Value,
                    IIF(
                        Fields!Group.Value = "Calls",
                        Fields!Calls.Value,
                        0
                        )
                    )
                )
            )  
       ) 
       / 
       IIF(IsNothing(MAX(Fields!OverallCalls.Value)),  
            MAX(Fields!TotalCalls.Value),  
            MAX(Fields!OverallCalls.Value) 
        )
       )
    

    另外,当您有许多嵌套的 Iif 语句时,为了更好的可读性,我建议使用 switch,如下代码所示

    =FORMATPERCENT(
    Sum(
        Switch (
            Fields!Group.Value = "Dissatisfactions Total", Fields!TotalDissatisfactions.Value,
            Fields!Group.Value = "RID Total", Fields!TotalRidDissatisfactions.Value,
            Fields!Group.Value = "CRT" OR Fields!Group.Value = "Escalations", Fields!ComplaintID.Value,
            Fields!Group.Value = "Calls", Fields!Calls.Value,
            True, 0
            )
    
       / 
       IIF(IsNothing(MAX(Fields!OverallCalls.Value)),  
            MAX(Fields!TotalCalls.Value),  
            MAX(Fields!OverallCalls.Value) 
        )
       )   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-04
      • 2014-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多