Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.17;
Скачать: CL | DM;

Вниз

Непонятное суммирование в IB в storedprocedure   Найти похожие ветки 

 
Rule ©   (2004-09-21 11:34) [0]

Возникла интересная ситуация
допустим у меня есть таблица
Table1:
CREATE TABLE TABLE1 (
   F1 INTEGER,
   F2 INTEGER);
и забиты такие значения:
1         2
2         3
4         null

так вот если выполнить запрос типа:
select sum(F2) from table1  то выдает 5, тоесть 2+3+null=5

а если в хранимой процедуре выполним вот так:
Sum1=0;  
Sum2=0;  
 for select f1, f2
     from table1
     into :F1, :F2
 do
   begin
      Sum1=Sum1+F1;
      Sum2=Sum2+F2;
   end
то результатом выполнения будет
sum1=7, sum2=null
при отладке на шаге при котором перебот доходит до значения null значение суммы равен null
таким образом мы получаем что любое значение плюс null  равно null, а почему тогда sum(F2) не равно null


 
Rule ©   (2004-09-21 11:35) [1]

вопрос забыл :), объясните пожалуйста почему так происходит, почему сум выдает не нулл а сложение перебором выдает нул


 
Johnmen ©   (2004-09-21 11:40) [2]

Потому, что N+null всегда равно null.
Но агрегатная ф-ия SUM учитывает это.


 
jack128 ©   (2004-09-21 11:41) [3]

Rule ©   (21.09.04 11:35) [1]
потому что так сделано :-)  Агрегаты НЕ учитывают null при вычислении, вот простые операции (+, -, /, || и тд ) - учитывают.


 
Rule ©   (2004-09-21 11:43) [4]

Понятно, а думал глюк какой-то



Страницы: 1 вся ветка

Текущий архив: 2004.10.17;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.021 c
3-1095652006
korvin
2004-09-20 07:46
2004.10.17
Компонет печати или запрос?


14-1096314391
Dot
2004-09-27 23:46
2004.10.17
Как убрать с рабстола Мое сетевое окружение в 2000


14-1096101166
Lenor
2004-09-25 12:32
2004.10.17
как узнать, кем...


14-1096479211
Sheng
2004-09-29 21:33
2004.10.17
Посоветуйте, что выбрать


14-1096028444
ssk
2004-09-24 16:20
2004.10.17
Классная ветка