Суммирование значений в столбце по предыдущим значениям

Slant-shadow
Дата: 20.10.2015 20:58:09
Всем привет.
Можете помочь написать запрос, который суммировал значения в столбце на основании предыдущих значений?
Например:
a 1
b 2
c 3
d 4
Должно получиться
a 1
b 3
c 6
d 10
накопитель
Дата: 20.10.2015 21:05:12
Slant-shadow,

В постановке не хватает явного определения предыдущести.
SergINI
Дата: 20.10.2015 23:38:51
Судя по всему алфавит английский и надеюсь, что уникальный ключ. Если так, то это тема не про оракл, а про стандартный сиквел.
almswiss
Дата: 23.10.2015 23:31:06
Даже, если ключ не уникальный, можно так:
with
t
as
(
(select 'a' field1, 1 field2 from dual)
union all
(select 'b' field1, 2 field2 from dual)
union all
(select 'c' field1, 3 field2 from dual)
union all
(select 'd' field1, 4 field2 from dual)
union all
(select 'd' field1, 4 field2 from dual)
)
Select rownum, t.*, sum(field2) OVER(ORDER BY rownum) AS nnn
from t
mcureenab
Дата: 23.10.2015 23:58:16
almswiss
Даже, если ключ не уникальный, можно так:
with
t
as
(
(select 'a' field1, 1 field2 from dual)
union all
(select 'b' field1, 2 field2 from dual)
union all
(select 'c' field1, 3 field2 from dual)
union all
(select 'd' field1, 4 field2 from dual)
union all
(select 'd' field1, 4 field2 from dual)
)
Select rownum, t.*, sum(field2) OVER(ORDER BY rownum) AS nnn
from t
можно, только результат недерминированный будет. Тогда уж лучше rowid использовать для упорядочивания.
almswiss
Дата: 24.10.2015 08:20:34
mcureenab,

При таком условии задачи не вижу принципиальной разницы. Что RowID, что rownum - одинаковых значений быть не должно. Более того, если будет запрос, в котором строка появляется более одного раза, результат будет разным. RowID может дублироваться, а rownum нет. Это уже к ТС вопрос, как ему надо.