ssrs nullif полное имя
Я строю отчет в SSRS, который делит два числа, чтобы получить их процент. Есть некоторые значения, которые будут разделены на 0, что приводит к ошибке. У меня есть это выражение, чтобы обойти ошибку деления на 0, но оно должно выполнить уравнение дважды.
=IIF(System.Double.IsNaN(Sum(Fields!ON_TIME.Value)/Sum(Fields!COUNT_FIELD.Value)),Nothing,(Sum(Fields!ON_TIME.Value)/Sum(Fields!COUNT_FIELD.Value)))
Чтобы повысить производительность, я хотел бы запустить это выражение как выражение NULLIF, например:
=NULLIF(Sum(Fields!ON_TIME.Value)/Sum(Fields!COUNT_FIELD.Value), 'Nan')
Когда я запускаю отчет с этим выражением, я получаю сообщение об ошибке "Имя NULLIF не объявлено". Я пытался найти полное имя для NULLIF, так как думаю, что это решит мою проблему, но мне не повезло найти его. Кто-нибудь знает, что такое полное имя NULLIF, или есть какой-то другой способ реализации NULLIF в SSRS?
Спасибо
2 ответа
NULLIF
это функция SQL, а не VB. Попробуйте просто проверить 0:
=IIF(SSum(Fields!COUNT_FIELD.Value) = 0,
Nothing,
Sum(Fields!ON_TIME.Value)/Sum(Fields!COUNT_FIELD.Value)
)
Вместо NULLIF
в выражениях SSRS VB вы хотите использовать IsNothing.
Однако это не решит проблему деления на ноль, равно как и ответ Д. Стэнли. Проблема в том, что IIF
это функция, а не языковая конструкция, поэтому SSRS оценивает оба параметра перед передачей их в функцию независимо от результата логического условия. Это означает, что Sum(Fields!ON_TIME.Value)/Sum(Fields!COUNT_FIELD.Value)
будет оцениваться даже тогда, когда Sum(Fields!COUNT_FIELD.Value)
это ноль, который вы заявили, что это будет.
Вам нужно использовать двойной IIF
чтобы предотвратить ошибку деления на ноль, вот так:
=IIF(Sum(Fields!COUNT_FIELD.Value) <> 0,
Sum(Fields!ON_TIME.Value) / IIF(Sum(Fields!COUNT_FIELD.Value) = 0, 1, Sum(Fields!COUNT_FIELD.Value)),
Nothing
)
Что мы делаем, когда Sum(Fields!COUNT_FIELD.Value)
равен нулю, вместо этого мы делим на 1, затем отбрасываем этот результат и даем Nothing
в результате.