2016-09-13 2 views
0

Новый в SQL-SSRSУдалить NaN в гнездовой 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

Просто замените NaN с 0 ... Или используйте 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 в противном случае это СУММА (дни)/СУММ (Fg), где отклик Согласовано или не согласились.

И вместо двух сумм просто используйте 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 

Эта функция позволяет вам написать собственный код, который устраняет все проблемы с Nan. это может быть созвано ниже

=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))))) 
Смежные вопросы