пытаясь вычислить промежуточный итог делает все 0 - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть этот запрос

with tab1(A) as 
  .....
select A from tab1;

Это возвращает мне несколько строк, таких как

1.0
2.0
3.0
4.0

Теперь я изменяю этот запрос на

with tab1(A) as 
  .....
select 
  A,
  sum(A) over(order by A rows unbounded preceding) 
from tab1;

Вывод становится

0, 0
0, 0
0, 0
0, 0

То, что я надеялся получить, было

1.0, 1.0
2.0, 3.0
3.0, 6.0
4.0, 10.0

Чем все мои результаты стали 0?

1 Ответ

1 голос
/ 23 апреля 2020

Возможно, 0 уже есть в данных, но вы просто не видите их с исходным запросом. Другими словами, у вас есть запрос без ORDER BY, поэтому порядок в наборе результатов может быть любым.

Попробуйте использовать фильтр:

with tab1(A) as 
  .....
select A, sum(A) over (order by A rows unbounded preceding) 
from tab1
where A > 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...