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 в результате.

Другие вопросы по тегам