Главная страница
    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.051 c
10-1094535960
Cobalt
2004-09-07 09:46
2005.06.29
Помогите найти ошибку в коде


1-1118209050
Ega23
2005-06-08 09:37
2005.06.29
Перекрытие методов TDataLink


14-1117961730
lifo
2005-06-05 12:55
2005.06.29
Проблема с принтером


4-1115230473
pound
2005-05-04 22:14
2005.06.29
порты


9-1111585363
Starter
2005-03-23 16:42
2005.06.29
Misc of GLScene





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский