【问题标题】:SSRS Formula or expression to change NaN to 0将 NaN 更改为 0 的 SSRS 公式或表达式
【发布时间】:2012-02-08 19:45:03
【问题描述】:

我正在使用以下表达式来计算百分比:

=Fields!Days.Value/Sum(Fields!Days.Value, "Date_month_name")

Days.Value 显示为 0,但是在我的一些结果中,而不是在我的百分比列中读取 0%,它实际上是在读取 NaN(不是数字)。

有谁知道我需要的确切表达式 forumla 以及我应该将它粘贴到我当前的表达式中的哪个位置以说“在显示 NaN 的位置,改为输入 '0'?”

(见图)

【问题讨论】:

    标签: reporting-services expression nan ssrs-expression iif-function


    【解决方案1】:

    我遇到了类似的问题,发现以下最容易做到。

    =Iif(
    Fields!Days.Value.Value <> 0 AND Sum(Fields!Days.Value, "Date_month_name") <> 0
    , Fields!Days.Value.Value/Sum(Fields!Days.Value, "Date_month_name")
    , 0
    )
    

    可能不是最好的解决方案,但可以。

    【讨论】:

      【解决方案2】:

      这是另一种选择。它应该可以解决问题,并摆脱Infinite的回复:

      =val(replace(Fields!Days.Value/Sum(Fields!Days.Value, "Date_month_name"),"NaN","0"))
      

      【讨论】:

        【解决方案3】:

        试试

        =IIf(Fields!Days.Value Is Nothing Or Sum(Fields!Days.Value, "Date_month_name") Is Nothing, 0, Fields!Days.Value / Sum(Fields!Days.Value, "Date_month_name"))
        

        【讨论】:

          【解决方案4】:

          怎么样

          =IIF(Fields!Days.Value > 0,Fields!Days.Value/Sum(Fields!Days.Value, "Date_month_name"),0)
          

          【讨论】:

          • 我尝试了类似的方法: =IIF(Sum(Fields!TotalPrice.Value)/Sum(Fields!Orders.Value) = 0, 0, Sum(Fields!TotalPrice.Value)/Sum (Fields!Orders.Value) 在我认为是货币的文本框中为我提供了一些奇怪的结果。上面的答案非常有效。谢谢!
          • 这个解决方案仍然给了我同样的错误。我已经用对我有用的方法回答了这个问题。
          【解决方案5】:

          我用这个来处理类似的情况,

          =REPLACE(Fields!Days.Value/Sum(Fields!Days.Value, "Date_month_name"),"NaN","0")

          【讨论】:

            【解决方案6】:

            我认为这是最简单也是最好的,

            =Switch(
            Fields!Days.Value/Sum(Fields!Days.Value, "Date_month_name") = "NaN",Nothing,
            Fields!Days.Value/Sum(Fields!Days.Value, "Date_month_name") = "Infinity",Nothing,
            Fields!Days.Value/Sum(Fields!Days.Value, "Date_month_name") = "-Infinity",Nothing
            )
            

            你也可以用 0 代替空。

            【讨论】:

              【解决方案7】:

              上面的答案我没有运气。这对我有用:

              =IIF(Single.IsNAN(Fields!Days.Value/Sum(Fields!Days.Value, "Date_month_name")), 0, Fields!Days.Value/Sum(Fields!Days.Value, "Date_month_name"))
              

              【讨论】:

                猜你喜欢
                • 2022-11-14
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2020-03-24
                相关资源
                最近更新 更多