![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как привести NULL к нулю в SQL запросе? [D6, IB6.x]
Alexander Vasjuk © (2002-04-15 12:10:00)Насчет хранимых процедур все понятно (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 для случая, когда суммировать нечего?
Alexander Vasjuk (2002-04-15 13:41:00) [1]Спасибо всем.
Да, похоже без UDF никак...
Пожалуй я все-таки через процедуру сделаю, чтоб потом у клиентом автоматом сработало, чтоб не лезть у них в сервер.
Да и против UDF у меня предубеждение. Не знаю, может эти глюки уже исправились, но раньше, к примеру, строковые функции глюкали на максимальной длине...
Val (2002-04-15 13:41:00) [2]>Alexandr © (15.04.02 13:31)
не относится это к вам совершенно :)
Ваш ответ и был-то единственным полезным
Alexandr (2002-04-15 13:31:00) [3]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
и делов-то...
Val (2002-04-15 13:27:00) [4]никто на тип бд не смотрит ;)
Denbear (2002-04-15 13:25:00) [5]В MSSQL есть такая функция.
ISNULL() - это системная функция, которая возвращает строку символов или числа вместо (NULL), когда это значение встречается в сохраняемой структуре данных, такой как столбец таблицы. Синтаксис функции ISNULL(): ISNULL(выражение, значение)
SB.John (2002-04-15 12:30:00) [6]функция nvl если она есть в InterBase (наверняка какой-то аналог должен быть) ну иди на худой конец decode
Johnmen (2002-04-15 12:24:00) [7]>VAleksey © : Не поможет !
VAleksey (2002-04-15 12:21:00) [8]CAST
Val (2002-04-15 12:18:00) [9]сорри, не обратил внимания на БД :((
Val (2002-04-15 12:14:00) [10]функция NVL
Alexandr (2002-04-15 12:14:00) [11]ага.
Юзай UDF
в Rfunc есть функция Z. Делает как раз то, что тебе надо.