powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Null value eliminated in aggregate function
6 сообщений из 6, страница 1 из 1
Null value eliminated in aggregate function
    #32961971
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASA 9.0.1

Есть табличка с такими данными:
Код: plaintext
1.
2.
3.
4.
5.
GroupId    RowId     N1        N2
group1     row1     100       200
group1     row2   (null)      50
group2     row1     300       250
group2     row2   (null)      100

Делаю:
select RowId, sum(N1), sum(N2) from t group by RowId order by RowId;
Получаю ошибку:
Код: plaintext
1.
2.
3.
4.
5.
Null value eliminated in aggregate function
SQLCODE   109   
Constant  SQLE_NULL_VALUE_ELIMINATED  
SQLSTATE   01003   
Sybase error code   409   

А всего-то хотелось получить результат вида
Код: plaintext
1.
2.
3.
RowId     N1        N2
row1     400       450
row2   (null)      150

Где я торможу?
...
Рейтинг: 0 / 0
Null value eliminated in aggregate function
    #32962033
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BOL: ASA Database Administration Guide/Database Options/Alphabetical list of options/ANSINULL option...
With ANSINULL ON, the evaluation of any aggregate function, except COUNT(*), on an expression that contains at least one NULL value, may generate the warning null value eliminated in aggregate function (SQLSTATE=01003). With ANSINULL OFF, this warning does not appear.
но у меня по любому аггрегации работают на NULL поля без этой ошибки при любой установке значения данной опции. Так что я тоже ничего не понимаю, разве что кроме того, что у меня 9.0.2.3044 :)
...
Рейтинг: 0 / 0
Null value eliminated in aggregate function
    #32962073
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUSТак что я тоже ничего не понимаю, разве что кроме того, что у меня 9.0.2.3044 :)
Сейчас проверил на 9.0.2.2451 - ANSINULL=ON варнинг вылазит. Но мне его в Off ставить нежелательно, у меня много где троичная логика используется...

Вот пример в чистом виде:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create table #a(
  GroupId char( 10 ),
  RowId char( 10 ),
  N1 integer,
  N2 integer
);

insert into #a values('group1', 'row1',  100 ,  200 );
insert into #a values('group1', 'row2', null,  50 );
insert into #a values('group2', 'row1',  300 ,  250 );
insert into #a values('group2', 'row2', null,  100 );

select * from #a;

а теперь
select RowId, sum(N1), sum(N2) from #a group by RowId order by RowId;
Получаем нужную таблицу и этот варнинг :(
...
Рейтинг: 0 / 0
Null value eliminated in aggregate function
    #32962119
old_joy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно так:

select RowId, sum(if N1 is null then 0 else N1 endif), sum(N2) from t group by RowId order by RowId;

Но, тогда получишь 0 вместо Null, если Null - принципиально, то примерно так

select RowId, sum(if N1 is null then 123456789 else N1 endif) as sum_N1, sum(N2), if sum_N1=123456789 then null else sum_N1 endif from t group by RowId order by RowId;

В конце концов, можешь создать процедурку, где перехватишь все предупреждения :)
...
Рейтинг: 0 / 0
Null value eliminated in aggregate function
    #32962769
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl select RowId, sum(N1), sum(N2) from t group by RowId order by RowId;

Получаю ошибку:
Код: plaintext
1.
2.
3.
4.
5.
Null value eliminated in aggregate function
SQLCODE   109   
Constant  SQLE_NULL_VALUE_ELIMINATED  
SQLSTATE   01003   
Sybase error code   409   

Это не Error, это Warning :). Его, по идее, нужно игнорировать (или не игнорировать :)) на клиенте. Если ходишь через ODBC - там есть пимпа Suppress fetch warnings, которая этот Warning подавит.
...
Рейтинг: 0 / 0
Null value eliminated in aggregate function
    #32964363
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
old_joyselect RowId, sum(if N1 is null then 0 else N1 endif), sum(N2) from t group by RowId order by RowId;
Но, тогда получишь 0 вместо Null, если Null - принципиально, то примерно так

Вообще-то, есть такая функция - isnull(). sum(isnull(N1,0)) и все :)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Null value eliminated in aggregate function
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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