Запросы, планы, оптимизация запросов, ...
Модераторы: kdv, CyberMax
-
Bagdat
- Сообщения: 19
- Зарегистрирован: 12 апр 2005, 12:50
Сообщение
Bagdat » 25 апр 2005, 16:04
select sum(a.summa)+sum(b.summa) from...
Если одна из сумм =null, то возвращает сумму двух сум как null.
Короче x+null=null как избежать, подкажите плиз.
Заранее спасибо!
-
_so_
- Сообщения: 144
- Зарегистрирован: 04 ноя 2004, 22:17
Сообщение
_so_ » 25 апр 2005, 16:13
Для IB использую спец UDF типа AsDouble
select AsDouble(sum(a.summa))+AsDouble(sum(b.summa)) from...
-
Bagdat
- Сообщения: 19
- Зарегистрирован: 12 апр 2005, 12:50
Сообщение
Bagdat » 25 апр 2005, 16:36
Попробывал неполучается говорит что не знает AsDouble. Может потому что у меня Firebird
-
_so_
- Сообщения: 144
- Зарегистрирован: 04 ноя 2004, 22:17
Сообщение
_so_ » 25 апр 2005, 16:44
Такую UDF написать нужно например:
DECLARE EXTERNAL FUNCTION ASDOUBLE
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'AsDouble' MODULE_NAME '<Твоя dll>';
function AsDouble(var Value: double): double;
begin
Result := Value;
end;
-
OX
- Сообщения: 24
- Зарегистрирован: 26 окт 2004, 17:08
Сообщение
OX » 25 апр 2005, 17:02
Bagdat писал(а):select sum(a.summa)+sum(b.summa) from...
Если одна из сумм =null, то возвращает сумму двух сум как null.
Короче x+null=null как избежать, подкажите плиз.
Заранее спасибо!
Получи
select coalesce(sum(a.summa), 0)+coalesce(sum(b.summa), 0) from...
пока kdv не пришел и в Firebird_v1.5.ReleaseNotes.pdf тебя не отправил

-
Bagdat
- Сообщения: 19
- Зарегистрирован: 12 апр 2005, 12:50
Сообщение
Bagdat » 26 апр 2005, 10:10
Спасибо! Все поличилось!!!