IIF условие в SSRS и обработка нулей - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть довольно сложная формула в SSRS, и по какой-то причине она показывает ошибку, когда встречается с нулевым значением, даже если в моей формуле я работаю с нулями.Кто-нибудь может посоветовать, как решить эту проблему?

= iif (datepart ("h", Now ()) = 6, iif (SUM (Fields! PYRevenue.Value) = 0, 0, ((SUM (Поля! Доход.Значение) - SUM (Поля! PYRevenue.Value)) / SUM (Поля! PYRevenue.Value))), iif (SUM (Поля! PYRevenue.Value) = 0, 0, (SUM (Поля! Доход.Значение) / СУММА (поля! PYRevenue.Value))))

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Извиняюсь за поспешный ответ ... Делаю это на моем телефоне ..

Даже если ваше последнее выражение не будет использовано, если SUM (PYRevenue) равно нулю, оно все равно будет оценено и даст делениепо ошибке ноль.2 способа решения.Я лично использую SWITCH вместо IIF для всего, что не просто.

В качестве альтернативы вам нужно проверить SUM (PYRevenue) по обе стороны вашего подразделения.Псевдокод будет =IIF(SUM(PYRevenue)=0,0,SUM(Revenue)) / IIF(SUM(PYRevenue)=0, 1, SUM(PYRevenue)) Так что, если сумма PY равна нулю, делайте 0/1, в противном случае делайте выручку / выручку

0 голосов
/ 11 декабря 2018

Извините, я неправильно прочитал вашу формулу, пока не исправлю ее правильно.Несмотря на то, что у вас есть проверка для PYRevenue = 0, вам нужно также включить еще один IIF () после обоих вхождений «/», например так:

iif (SUM (Fields! PYRevenue.Value) = 0,0, ((SUM (Поля! Доход.Значение) - SUM (Поля! PYRevenue.Value)) / IIF (Сумма (Поля! PYRevenue.Value) = 0, 1, SUM (Поля! PYRevenue.Value)))

SSRS оценивает все выражения, поэтому вам нужно обработать значение 0, даже если ваша родительская логика предотвращает попадание этого блока.

...