powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Функция SUM() и Coalesce() как подружить ?
10 сообщений из 10, страница 1 из 1
Функция SUM() и Coalesce() как подружить ?
    #38596034
AlexSem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте гуру, помогите со следующим вопросом.
Сам в огнептице не шибко силён.

Можно ли в жарптице (вер. 2.1.5 Win32) создать алиасы для функции, а конкретно есть необходимость
подмены SUM(tra-ta-ta) в ХП автоматом на Coalesce( SUM(tra-ta-ta) , 0)
Годится если как то заменить SUM на например ZUM чтобы при этом выполнялась конструкция Coalesce(Sum(tra-ta-ta),0).
Скриптом менять во всех ХП SUM на ZUM я научился.

Дополнительно о задаче:
Есть десятки FDB файлов в 5 филиалах, а предыдущий программер не знал (наверное) что SUM() возвращает Null если нет
записей удовлетворяющих условиям в Where, в каждом FDB свой набор ХП и я обнаружил что в некоторых нет coalesce и следовательно результат будет непредсказуемым. Может есть глобальная установка при которой сервер сам присваивает ноль в результат.
В основном Sum используются внутри конструкции for select.

Заранее спасибо, тем кто высказал своё мнение.
...
Рейтинг: 0 / 0
Функция SUM() и Coalesce() как подружить ?
    #38596049
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexSemМожно ли в жарптице (вер. 2.1.5 Win32) создать алиасы для функции, а конкретно есть необходимость
подмены SUM(tra-ta-ta) в ХП автоматом на Coalesce( SUM(tra-ta-ta) , 0)

нет нельзя
...
Рейтинг: 0 / 0
Функция SUM() и Coalesce() как подружить ?
    #38596052
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexSem,

Придется огорить - для твоей версии - только скриптами.
...
Рейтинг: 0 / 0
Функция SUM() и Coalesce() как подружить ?
    #38596055
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexSem а предыдущий программер не знал (наверное) что SUM() возвращает Null если нет
записей удовлетворяющих условиям в Where, в каждом FDB свой набор ХП и я обнаружил что в некоторых нет coalesce и следовательно результат будет непредсказуемым. Может есть глобальная установка при которой сервер сам присваивает ноль в результат.
В основном Sum используются внутри конструкции for select.

Заранее спасибо, тем кто высказал своё мнение.

Если нет записей удовлетворяющих условиям в Where то оно ничего не вернёт (если конечно там до кучи нет и COUNT()).
И соотвественно если это цикл FOR то он просто "пропустится", если это просто SELECT то в переменной останется предыдущее значение.
Так что простая замена может не дать ожидаемого результата
...
Рейтинг: 0 / 0
Функция SUM() и Coalesce() как подружить ?
    #38596058
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexSemпредыдущий программер не знал (наверное) что SUM() возвращает Null если нет записей удовлетворяющих условиям в WhereЗаписей (кортежей) в этом случае просто не будет, так что одного coalesce тут недостаточно.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
with data as(
  select 1 u, 100 v from rdb$database union all
  select 2 u, 200 v from rdb$database union all
  select 1 u, 300 v from rdb$database
)
select u,coalesce(sum(v),0) 
from rdb$database left join data on u<0
group by u
...
Рейтинг: 0 / 0
Функция SUM() и Coalesce() как подружить ?
    #38596064
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7mЕсли нет записей удовлетворяющих условиям в Where то оно ничего не вернёт (если конечно там до кучи нет и COUNT()).count(*) поможет, если только туда не всунули group by :-)
...
Рейтинг: 0 / 0
Функция SUM() и Coalesce() как подружить ?
    #38596125
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоидm7mЕсли нет записей удовлетворяющих условиям в Where то оно ничего не вернёт (если конечно там до кучи нет и COUNT()).count(*) поможет, если только туда не всунули group by :-)
Ну да, COUNT() я зря приплел, group by тут более к месту, ибо SELECT sum() ... , без group by всегда вернет одну запись
...
Рейтинг: 0 / 0
Функция SUM() и Coalesce() как подружить ?
    #38596172
AlexSem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thanx всем,
мда, придётся скриптами + аналитику включить и тэги свои ставлять.

А можно ещё вопросик, может существует ли в ЖП штатное что-то типа № версии ХП или дата изменения его тела, чтобы по нескольку раз не менять тело ХП. Если нет тогда придётся свои тэги-комментарии вставлять, например типа "--stp_version_control=2014"


Всем ещё раз спасибочки.
...
Рейтинг: 0 / 0
Функция SUM() и Coalesce() как подружить ?
    #38596189
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexSemсуществует ли в ЖП штатное что-то типа № версии ХП или дата изменения его теладо 2.5 включительно этого нету :(
...
Рейтинг: 0 / 0
Функция SUM() и Coalesce() как подружить ?
    #38596195
AlexSem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид, СПАСИБО И УВАЖУХА.

Еще спасибо Таблоид-у за его интересные топики и эксперименты.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Функция SUM() и Coalesce() как подружить ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]