Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Результат запроса null->результат запроса=0 [D7, FB 2.0]


RomanH ©   (2006-09-29 13:32:00) 

Мастера подскажите пожайлусто если результат SQL-запроса увенчался null, то результат должен быть равен 0.
Использую nullif а результат nullисправте меня
Вот что я хочу сделать то есть выбрать сумму всех затрат партии
но некоторые затраты могут быть в иностранной валюте,то есть затраты в ин валюте необходимо перевести на рубли (если не переводятся то есть код валюты не указан то 0)
select  batch.B_AKCIZ+batch.B_VAT+batch.B_REG_IN_STORE+batch.B_PAY_IN_STORE+batch.B_BOARDING+
         batch.B_PROMOTE+batch.B_CUSTOM_REG+batch.B_DU+batch.B_ECOLOGY+batch.B_CASH+batch.B_EXPRESS_OFFICE+
         batch.B_DP+batch.B_LABEL+batch.B_SERTIFICATE+
         nullif(((batch.B_TRANSPORT_TO_KALD)*(select curs.curs_valuta from curs
                       where curs.ncode=batch.b_ttk_valuta_id and
                             curs.datev=(select batch.b_date_go from batch
                             where batch.batch_id=:batch_id))),0)+
         nullif(((batch.B_TRANSPORT_TO_STORE)*(select curs.curs_valuta from curs
                       where curs.ncode=batch.b_tts_valuta_id and
                             curs.datev=(select batch.b_date_go from batch
                             where batch.batch_id=:batch_id))),0)+
         nullif(((batch.B_TRANSPORT_OTHER)*(select curs.curs_valuta from curs
                       where curs.ncode=batch.b_to_valuta_id and
                             curs.datev=(select batch.b_date_go from batch
                             where batch.batch_id=:batch_id))),0)+
         nullif(((batch.B_OTHER)*(select curs.curs_valuta from curs
                       where curs.ncode=batch.b_o_valuta_id and
                             curs.datev=(select batch.b_date_go from batch
                             where batch.batch_id=:batch_id))),0)
 from batch
 where batch.batch_id=:batch_id into :zatrats;


Romkin   (2006-09-29 14:23:00) [1]

NULLIF выдает NULL когда значения равны. Используй coalesce...


Sergey13   (2006-09-29 13:39:00) [2]

Какое то из слагаемых =NULL (точнее IS NULL, а то из ПОТРЕПАТЬСЯ придут и убъют меня 8-). Обрами все составляющие nullif-ми или все сразу.


Наверх

Титульная страница Поиск, карта сайта Написать письмо