Чтобы сгенерировать ожидаемый набор результатов, вам необходимо объединить таблицу с самим собой с условием неравенства в столбце order
. Затем вы можете указать сумму окна:
select
t1.table_a_id,
t1.label_x,
t2.label_y,
sum(t2.value) over(
partition by t1.table_a_id, t1.label_x
order by t1."order", t2."order"
) agg_value
from
table_b t1
inner join table_b t2
on t1.table_a_id = t2.table_a_id
and t2."order" >= t1."order"
order by t1."order", t2."order"
Примечание: order
- зарезервированное слово, поэтому его необходимо заключить в кавычки;если у фактического столбца базы данных есть другое имя, вы можете удалить двойные кавычки.
Демонстрация на БД Fiddle :
TABLE_A_ID | LABEL_X | LABEL_Y | AGG_VALUE
---------: | :------ | :------ | --------:
1 | A | B | 1
1 | A | C | 3
1 | A | D | 6
1 | A | E | 10
1 | A | F | 15
1 | B | C | 2
1 | B | D | 5
1 | B | E | 9
1 | B | F | 14
1 | C | D | 3
1 | C | E | 7
1 | C | F | 12
1 | D | E | 4
1 | D | F | 9
1 | E | F | 5