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

Вниз

Как привести NULL к нулю в SQL запросе?   Найти похожие ветки 

 
Alexander Vasjuk   (2002-04-15 12:10) [0]

Насчет хранимых процедур все понятно (if (x IS NULL) then x = 0)
А вот в рамках одного запроса!
Вот конкретная проблема

select
Name,
(select sum(Price * Kol) from Prihod where Tovar = Tovar.ID) -
(select sum(Price * Kol) from Rashod where Tovar = Tovar.ID) Ostatok
from Tovar
order by Name

В примере при отсуствии записей в таблице Rashod c полем Tovar, равным полю ID таблицы Tovar, разница сумм будет NULL, как и вычитаемая сумма.
Как бы в рамках одного запроса заставить SUM выдавать 0 вместо NULL для случая, когда суммировать нечего?


 
Val ©   (2002-04-15 12:14) [1]

функция NVL


 
Alexandr ©   (2002-04-15 12:14) [2]

ага.
Юзай UDF
в Rfunc есть функция Z. Делает как раз то, что тебе надо.


 
Val ©   (2002-04-15 12:18) [3]

сорри, не обратил внимания на БД :((


 
VAleksey ©   (2002-04-15 12:21) [4]

CAST


 
Johnmen ©   (2002-04-15 12:24) [5]

>VAleksey © : Не поможет !


 
SB.John ©   (2002-04-15 12:30) [6]

функция nvl если она есть в InterBase (наверняка какой-то аналог должен быть) ну иди на худой конец decode


 
Denbear   (2002-04-15 13:25) [7]

В MSSQL есть такая функция.
ISNULL() - это системная функция, которая возвращает строку символов или числа вместо (NULL), когда это значение встречается в сохраняемой структуре данных, такой как столбец таблицы. Синтаксис функции ISNULL(): ISNULL(выражение, значение)


 
Val ©   (2002-04-15 13:27) [8]

никто на тип бд не смотрит ;)


 
Alexandr ©   (2002-04-15 13:31) [9]

2Val:
Как это никто? Я смотрел. И дал ему правильный совет. Я сам так работаю.
Его запрос преобразится в вид

select
Name,
z(select sum(Price * Kol) from Prihod where Tovar = Tovar.ID) -
z(select sum(Price * Kol) from Rashod where Tovar = Tovar.ID) Ostatok
from Tovar
order by Name


и делов-то...


 
Alexander Vasjuk   (2002-04-15 13:41) [10]

Спасибо всем.
Да, похоже без UDF никак...
Пожалуй я все-таки через процедуру сделаю, чтоб потом у клиентом автоматом сработало, чтоб не лезть у них в сервер.
Да и против UDF у меня предубеждение. Не знаю, может эти глюки уже исправились, но раньше, к примеру, строковые функции глюкали на максимальной длине...


 
Val ©   (2002-04-15 13:41) [11]

>Alexandr © (15.04.02 13:31)
не относится это к вам совершенно :)
Ваш ответ и был-то единственным полезным



Страницы: 1 вся ветка

Текущий архив: 2002.05.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.009 c
3-25991
Yuraz
2002-04-15 15:46
2002.05.09
2 вопроса, 1) как проверить на компе есть ли ADO библ.


3-25985
Пикулев Евгений
2002-04-15 11:08
2002.05.09
Количество записей в DBGride


1-26163
Lord BDV
2002-04-24 19:51
2002.05.09
Разработчики Delphi схалтурили


3-26044
Саша
2002-04-17 06:50
2002.05.09
undeclared identifier ttdbase


3-26010
777
2002-04-15 23:11
2002.05.09
Seek