![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TSQL вычитание NULLa [FireBird 2.1.1]
DelphiN! © (2011-04-14 12:02:00)Доброго времени суток!
Помогите решить проблему, есть таблица
TABLE1
VALUE_ TYPE_
1 T1
2 T2
И запрос
select sum(value_)
-
(select sum(value_) from table1 where type_ = 'T3')
from table1 where (type_ = 'T1')or(type_ = 'T2')
Результат запроса - NULL, как сделать чтобы он был равен 3 ((1+2)-0)?
Кщд (2011-04-25 07:12:00) [1]>shpigel © (19.04.11 18:26) [9]
решение уже было дано
но раз уж так неймется, то что будет, если этот запрос:
select sum(ISNULL(value_ , 0)) from table1 where type_ = 'T3'
возвращает 0 записей?
shpigel (2011-04-19 18:26:00) [2]добавь ISNULL перед операцией SUM. т.е.:
select sum( ISNULL(value_ , 0))
-
(select sum( ISNULL(value_ , 0)) from table1 where type_ = 'T3')
from table1 where (type_ = 'T1')or(type_ = 'T2')
KSergey (2011-04-18 15:55:00) [3]добавить
where value_ is not null
Palladin (2011-04-15 15:49:00) [4]Поле, которому разрешено быть null, конечно может учавствовать в вычислениях. Но сам по себе null уже говорит о том что значения НЕТ, а если значения нет, то и результатов вычисления НЕТ. Или убирай null и заменяй по человечески нулем, или уж прими null в результатах.
Anatoly Podgoretsky (2011-04-15 15:32:00) [5]
> TSQL вычитание NULLa [FireBird 2.1.1]
А где вычитание в приведеном коде
Кщд (2011-04-15 06:32:00) [6]>DelphiN! (14.04.11 12:02)
лучше за один проход:
select coalesce(
case t.type_
when 'T3' then - t.value_
else t.value_
end,
0
)
from table1 t where t.type_ in ('T1', 'T2', 'T3')
DelphiN! (2011-04-14 12:37:00) [7]
> turbouser © (14.04.11 12:34) [3]
опшибся, сорри )
turbouser (2011-04-14 12:34:00) [8]Какой нафиг TSQL в FB??
Sergey13 (2011-04-14 12:22:00) [9]ISNULL?
DelphiN! (2011-04-14 12:21:00) [10]Нашел решение,
select sum(value_)
-
COALESCE((select sum(value_) from table1 where type_ = 'T3'),0)
from table1 where (type_ = 'T1')or(type_ = 'T2')
всем спасибо