Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
4-1115211348
Volume
2005-05-04 16:55
2005.06.29
Delete Ctrl+Alt+Del


1-1117931633
grol
2005-06-05 04:33
2005.06.29
Работа с 3-х мерными массивами!


3-1116003967
seregka
2005-05-13 21:06
2005.06.29
Непонятная ошибка


14-1117701386
quickblack
2005-06-02 12:36
2005.06.29
А как войти на форум под своим ником?


3-1116279827
normandia
2005-05-17 01:43
2005.06.29
sum только по некоторым записям





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский