2016-09-13 85 views
0

新刪除的NaN到SQL-SSRS嵌套IIF在SSRS表達

如何將功能添加到下面的代碼來改變返回NaN值設置爲0或空白?我認爲正在發生的情況是,同意和不同意的總和= 0我得到這個楠。我認爲如果我不處理商定和不同意的類別,這對我來說會更容易。再次,SQL編程新手。任何幫助將不勝感激。

=(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))) 
+0

簡單地用0替換爲NaN ...或立即使用Single.IsNAN – pedram

回答

0

嘗試類似下面,

=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") 

而且,看this

+0

確定嘗試此。謝謝。 – common763

+0

你寫了什麼內部表達? – pedram

0

而不是替換文本除以返回零,你應該處理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))) 

如果SUM是,計算0/1否則它是SUM(天數)/ SUM(FQ)其中響應是商定或不同意

而不是兩個總和,只是在一個使用OR。

0
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 

這個功能可以寫一個修復與南所有問題的自定義代碼。 這可以通過以下

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

叫你的代碼如下

=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)))))