简体   繁体   English

在SSRS表达式中的嵌套iif中删除NaN

[英]Remove NaN in Nested iif in SSRS expression

New to SQL-SSRS SQL-SSRS的新功能

How do I add functionality to the below code to change returned NaN values to 0 or blank? 如何在以下代码中添加功能,以将返回的NaN值更改为0或空白? What I think is happening is in situations that the sum of Agreed and Disagreed = 0 I am getting this Nan. 我认为正在发生的情况是“同意”与“不同意”之和= 0我得到了这个Nan。 I think this would be easier for me if I wasnt dealing with the Agreed and Disagreed categories. 我认为,如果我不处理“同意”和“不同意”类别,这对我来说会更容易。 Again, new to SQL programming. 同样,这是SQL编程的新功能。 Any help would be greatly appreciated. 任何帮助将不胜感激。

=(Sum(iif(Fields!Response.Value = "Agreed",Fields!Days.Value,0)) + Sum(iif(Fields!Response.Value = "Disagreed",Fields!Days.Value,0)))/(Sum(iif(Fields!Response.Value = "Agreed",Fields!Fq.Value,0)) + Sum(iif(Fields!Response.Value = "Disagreed",Fields!Fq.Value,0)))

Try something like below, 尝试以下类似的方法,

=Replace((Sum(IIF(Fields!Response.Value = "Agreed",Fields!Days.Value,0)) + 
Sum(IIF(Fields!Response.Value = "Disagreed",Fields!Days.Value,0))),"NaN","0")
/ Replace((Sum(IIF(Fields!Response.Value = "Agreed",Fields!Fq.Value,0)) 
+ Sum(IIF(Fields!Response.Value = "Disagreed",Fields!Fq.Value,0))),"NaN","0")

Also, look at this 另外,看看这个

Rather than replacing the text returned from dividing by zero, you should handle the DIV 0 issue in the expression: 您应该处理表达式中的DIV 0问题,而不是替换从零除返回的文本:

=IIF(
    SUM(IIF(Fields!Response.Value = "Agreed" OR Fields!Response.Value = "Disagreed", Fields!Fq.Value, 0)) = 0, 0, 
        SUM(IIF(Fields!Response.Value = "Agreed" OR Fields!Response.Value = "Disagreed", Fields!Days.Value, 0)))
/IIF(
    SUM(IIF(Fields!Response.Value = "Agreed" OR Fields!Response.Value = "Disagreed", Fields!Fq.Value, 0)) = 0, 1, 
        SUM(IIF(Fields!Response.Value = "Agreed" OR Fields!Response.Value = "Disagreed", Fields!Fq.Value, 0)))

If the SUM is zero , the calculation is 0 / 1 otherwise it's the SUM(Days) / SUM(Fq) where the Response is Agreed or Disagreed . 如果SUM 为零 ,则计算为0/1,否则为“ 同意”或“ 不同意”SUM(天)/ SUM(Fq)

And rather than two sum, just use an OR in the one. 而不是两个和,只需在一个中使用OR。

Public Function Divider (ByVal Dividend As Double, ByVal Divisor As Double)
If IsNothing(Divisor) Or Divisor = 0
  Return 0
Else
  Return Dividend/Divisor
End If
End Function 

this function enables you to write a custom code which fixes all problems with Nan . 此功能使您可以编写自定义代码来解决Nan的所有问题。 this can be called by below 这可以由下面称为

=Code.Divider(Fields!FieldA.Value, Fields!FieldB.Value)

your code is as below 您的代码如下

=Code.Divider(((Sum(iif(Fields!Response.Value = "Agreed",Fields!Days.Value,0)) + Sum(iif(Fields!Response.Value = "Disagreed",Fields!Days.Value,0))), ((Sum(iif(Fields!Response.Value = "Agreed",Fields!Fq.Value,0)) + Sum(iif(Fields!Response.Value = "Disagreed",Fields!Fq.Value,0)))))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM