Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: CL | DM;

Вниз

Как возвращать из запроса 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.031 c
1-1117903325
DimaK
2005-06-04 20:42
2005.06.29
Поиск определенного компонента на форме


14-1117908515
Udaff
2005-06-04 22:08
2005.06.29
проблема с печатью


4-1114770645
Sour Smile
2005-04-29 14:30
2005.06.29
Работа с сетью из-под сервиса


3-1116708519
Starcom
2005-05-22 00:48
2005.06.29
Password...


6-1112087491
Sapsi
2005-03-29 13:11
2005.06.29
найти все компьютеры в сети