Гость
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Функция IFF входящая в SSRS, 2008 SQL-server / 9 сообщений из 9, страница 1 из 1
17.02.2014, 18:51
    #38563542
Yagrus2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция IFF входящая в SSRS, 2008 SQL-server
Здравствуйте.
Наткнулся на непонимание встроенной в репортинг функции IIF().
В отчете есть сводная таблица, у которой значение области DATA определяется формулой:
=IIF(Fields!Category_ORD.Value <> 7, Sum(Fields!Value1.Value), Sum(Fields!V1.Value)/Sum(Fields!Value1.Value))
То есть формула меняется в зависимости от значения поля Fields!Category_ORD.Value
Загвоздка заключается в Sum(Fields!V1.Value)/Sum(Fields!Value1.Value), так как возможно деление на 0.

Когда происходит деление на 0, выскакивает ошибка не только для Fields!Category_ORD.Value = 7, но и для Fields!Category_ORD.Value = 6

Скриншоты прилагаются. Из-за чего может происходить сбой формулы?
...
Рейтинг: 0 / 0
17.02.2014, 18:51
    #38563544
Yagrus2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция IFF входящая в SSRS, 2008 SQL-server
Yagrus2,
ск2
...
Рейтинг: 0 / 0
17.02.2014, 18:52
    #38563545
Yagrus2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция IFF входящая в SSRS, 2008 SQL-server
Yagrus2,
ск3
...
Рейтинг: 0 / 0
17.02.2014, 18:58
    #38563556
Yagrus2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция IFF входящая в SSRS, 2008 SQL-server
Yagrus2,
Я попытался исключить деление на 0 конструкцией:
=IIF(Fields!Category_ORD.Value <> 7, Sum(Fields!Value1.Value), IIF(Sum(Fields!Value1.Value) = 0, Sum(Fields!Value1.Value), Sum(Fields!V1.Value)/Sum(Fields!Value1.Value)))
Второй вопрос почему не работает такая конструкция? Результат отчета как в последнем скриншоте
...
Рейтинг: 0 / 0
17.02.2014, 19:19
    #38563582
Yagrus2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция IFF входящая в SSRS, 2008 SQL-server
Yagrus2,
Вот таблица с которой работаю
ManagementTerritoryID ManagementRegionID CityID StoreId YR MN YR_MN WK1 Category_ORD Value V11 5 173 582 2014 1 2014-01 1 6 0.00 NULL1 5 173 582 2014 1 2014-01 2 6 0.00 NULL1 5 173 582 2014 1 2014-01 3 6 0.00 NULL1 5 173 582 2014 1 2014-01 4 6 0.00 NULL1 5 173 582 2014 2 2014-02 1 6 0.00 NULL1 5 173 582 2014 2 2014-02 2 6 0.00 NULL1 5 173 582 2014 2 2014-02 3 6 0.00 NULL1 5 173 582 2014 2 2014-02 4 6 0.00 NULL1 5 173 582 2014 1 2014-01 1 7 0.00 0.001 5 173 582 2014 1 2014-01 2 7 0.00 0.001 5 173 582 2014 1 2014-01 3 7 0.00 0.001 5 173 582 2014 1 2014-01 4 7 0.00 0.001 5 173 582 2014 2 2014-02 1 7 0.00 0.001 5 173 582 2014 2 2014-02 2 7 0.00 0.001 5 173 582 2014 2 2014-02 3 7 0.00 0.001 5 173 582 2014 2 2014-02 4 7 0.00 0.00
...
Рейтинг: 0 / 0
17.02.2014, 19:37
    #38563601
papalexi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция IFF входящая в SSRS, 2008 SQL-server
Yagrus2,

потому что iif сначала вычисляет значения всех аргументов, поэтому вне зависиости от условия, пытаться выполнить деление будет всегда.
...
Рейтинг: 0 / 0
17.02.2014, 19:40
    #38563604
Yagrus2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция IFF входящая в SSRS, 2008 SQL-server
papalexi,
Ок, но почему он Category_ORD = 6 выводит результат деления? Ведь по формуле должно быть просто Value1?

Модератор: Тема перенесена из форума "Microsoft SQL Server".
...
Рейтинг: 0 / 0
17.02.2014, 20:53
    #38563659
user89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция IFF входящая в SSRS, 2008 SQL-server
Yagrus2,

тоже недавно мучился с делением на ноль. Помог этот совет из гугла
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
hi,
i had this formula written for a textbox in a table, but yet still encounter the following error:
expression:
=iif(countdistinct(Fields!room.Value)=0,0, sum(Fields!rate.Value)/countdistinct(Fields!room.Value))
error:
attempted to divide by zero.
any way i can solve this problem?
thanks!

In general, you want a pattern like this to avoid division by zero:
=iif(B=0, 0, A / iif(B=0, 1, B))
...
Рейтинг: 0 / 0
17.02.2014, 22:59
    #38563727
Yagrus2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция IFF входящая в SSRS, 2008 SQL-server
Всем спасибо. Все заработало.
...
Рейтинг: 0 / 0
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Функция IFF входящая в SSRS, 2008 SQL-server / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]