Форум: "Базы";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
ВнизКак возвращать из запроса sum(kol) не null, а 0 Найти похожие ветки
← →
jiny (2005-05-17 12:27) [0]Проблема следующая, одно поле в запросе это сумма и разность из 3-х таблиц :
делаю так
select name_tov,
(select sum(kol) from fp1_2 where id_tov=num_tov and flag=1)-
(select sum(kol) from fp1_2 where id_tov=num_tov and flag=1)
as ost_tek, (select name_firm from firmproizv where
firmproizv.num_firm=tovar.num_firm) as FirmProizv from tovar where isActive=1 and
((select sum(kol) from fp1_2 where id_tov=num_tov and flag=1)-
(select sum(kol) from fp1_2 where id_tov=num_tov and flag=1))>0
так вот : когда товар присутствует в обоих таблицах, пусть даже с нулевым кол-вом - поле ost_tek возвращает 0, но если в fr1_1 нет такого товара, то получается ПРИХОД-null=null
Пробовал через cast( .... as numeric(15,2)) ничего не получилось,
как мне решить эту проблему ?
← →
ANB © (2005-05-17 12:36) [1]В оракле есть NVL(), в МикроСкуле - IsNull. Поищи нечто подобное в ИБ, а если не найдешь - юзай case when sum(kol) is null then 0 else sum(kol) end. Лучше запихать sum(kol) во вложенный запрос, только не знаю, ест их ИБ, или нет.
← →
jiny (2005-05-17 12:47) [2]Есть там такое Is null, правда в запрос условие не впихнешь, надо ХП делать, хотя может и можно как нить, если бы знал не обратился бы сюда, просто это сейчас актуальная проблема для меня, так как не на все рисуются остатки
← →
DSKalugin © (2005-05-17 12:49) [3]Посмотри в сторону
COALESCE
case
← →
Виталий Панасенко (2005-05-17 12:51) [4]UDF, rFunc например.. Там есть Z(F) - если NULL возвращает 0, иначе то, что было...
double EXPORT fn_z(ARG(double*, a))
ARGLIST(double *a)
{ return *a; }
← →
Johnmen © (2005-05-17 12:52) [5]>(select sum(kol) from fp1_2 where id_tov=num_tov and flag=1)-
>(select sum(kol) from fp1_2 where id_tov=num_tov and flag=1)
По-моему, это всегда = 0
:))
← →
ANB © (2005-05-17 12:54) [6]Не Is Null - это оператор, а IsNull() - функция. Если нету - юзай case.
← →
ANB © (2005-05-17 12:55) [7]
> правда в запрос условие не впихнешь
см case и мой пост №1
← →
jiny (2005-05-17 12:56) [8]Спасибо, сейчас попробую, а насчет Johnmen © (17.05.05 12:52) [5] торопился, на самом деле fp1-Fr1
← →
Zacho © (2005-05-17 13:03) [9]jiny (17.05.05 12:56) [8]
В IB нет ни CASE, ни COALESCE. Эти функции есть в FB. А в Yaffil есть IIF.
Так что для IB - только с помощью UDF.
А вообще-то все поля, с которыми предпологается делать запросы с арифметическими функциями должны быть NOT NULL. Тогда и проблем таких не будет.
← →
jiny (2005-05-17 13:08) [10]для Zacho © (17.05.05 13:03) [9]
Извиняюсь что дизориентировал Вас у меня FB 1.5 Superserver
← →
jiny (2005-05-17 13:12) [11]Все заработало, вопрос отпал сам по себе, всем огромное спасибо, а также огромное спасибо тому кто предложил вариант с COALESCE
← →
ANB © (2005-05-17 13:14) [12]
> должны быть NOT NULL.
- а если уже так в базе запроектировано ?
← →
Danilka © (2005-05-17 13:22) [13][12] ANB © (17.05.05 13:14)
перепроектировать
← →
Johnmen © (2005-05-17 13:24) [14]>jiny (17.05.05 13:12) [11]
Почаще в доку заглядывай - будешь меньше спрашивать.
:)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.129 c