Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> sum когда нет записей в таблице, sum в firebird 
V
    Опции темы
sergey_85
Дата 15.8.2008, 07:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 445
Регистрация: 17.4.2007
Где: Россия, Челябинск

Репутация: нет
Всего: 1



Привет!

Есть запрос с использованием sum(...), который используется в подзапросе (неважно каком).
Запрос выглядит так:

SELECT CAST(sum(CONTRACT.SUMM) as INTEGER) as SUMMA FROM CONTRACT 
WHERE CONTRACT.CONTRACTID=1

Так вот, когда в таблице нет записей, то результат запроса -  NULL значение и даже cast не помогает перевести его в 0, а хочется получить значение 0 типа INTEGER, а не NULL?
Как можно преобразовать NULL в 0 типа INTEGER?


--------------------
A good design always pays off.
PM MAIL   Вверх
TaNK
Дата 15.8.2008, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 669
Регистрация: 29.10.2006
Где: Краснодар

Репутация: нет
Всего: 1



Цитата(sergey_85 @ 15.8.2008,  07:11)
Привет!

Есть запрос с использованием sum(...), который используется в подзапросе (неважно каком).
Запрос выглядит так:

SELECT CAST(sum(CONTRACT.SUMM) as INTEGER) as SUMMA FROM CONTRACT 
WHERE CONTRACT.CONTRACTID=1

Так вот, когда в таблице нет записей, то результат запроса -  NULL значение и даже cast не помогает перевести его в 0, а хочется получить значение 0 типа INTEGER, а не NULL?
Как можно преобразовать NULL в 0 типа INTEGER?

Код

SELECT isnull(sum(CONTRACT.SUMM),0) as SUMMA FROM CONTRACT 
WHERE CONTRACT.CONTRACTID=1

извеняюсь.... код дан под MSSQL
для  firebird попробуй вместо isnull - используй coalesce
Код

SELECT coalesce(sum(CONTRACT.SUMM),0) as SUMMA FROM CONTRACT 
WHERE CONTRACT.CONTRACTID=1


Это сообщение отредактировал(а) TaNK - 15.8.2008, 08:11


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
sergey_85
Дата 15.8.2008, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 445
Регистрация: 17.4.2007
Где: Россия, Челябинск

Репутация: нет
Всего: 1



Оооо! Спасибо за помощь TaNk! 

Да, теперь выдаёт не NULL, а 0 (INTEGER) как я и хотел!

Код

SELECT coalesce(sum(CONTRACT.SUMM), 0) FROM CONTRACT
WHERE CONTRACT.CONTRACTID=1



--------------------
A good design always pays off.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0459 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.