Наистина ли имате нужда от допълнителна маса?
Можете да получите необходимите данни с проста заявка, която очевидно можете да създадете като изглед, ако искате да изглежда като таблица.
Така ще получите данните, които търсите:
select
account, bookdate, amount,
sum(amount) over (partition by account order by bookdate) running_total
from t
/
Това ще създаде изглед, който да ви показва данните, сякаш са таблица:
create or replace view t2
as
select
account, bookdate, amount,
sum(amount) over (partition by account order by bookdate) running_total
from t
/
Ако наистина имате нужда от таблицата, имате ли предвид, че се нуждаете от постоянно актуализиране? или само еднократно? Очевидно, ако е еднократно, можете просто да „създадете таблица като избрана“, като използвате горната заявка.
Тестовите данни, които използвах, са:
create table t(account number, bookdate date, amount number);
insert into t(account, bookdate, amount) values (1, to_date('20080101', 'yyyymmdd'), 100);
insert into t(account, bookdate, amount) values (1, to_date('20080102', 'yyyymmdd'), 101);
insert into t(account, bookdate, amount) values (1, to_date('20080103', 'yyyymmdd'), -200);
insert into t(account, bookdate, amount) values (2, to_date('20080102', 'yyyymmdd'), 200);
commit;
редактиране:
забравих да добавя; уточнихте, че искате таблицата да бъде подредена - това всъщност няма смисъл и ме кара да мисля, че наистина имате предвид, че искате заявката/изгледът - подреждането е резултат от заявката, която изпълнявате, а не нещо, което е присъщо на таблицата (пренебрегвайки индексираните организирани таблици и други подобни).