Hai davvero bisogno del tavolo in più?
Puoi ottenere i dati di cui hai bisogno con una semplice query, che puoi ovviamente creare come vista se vuoi che appaia come una tabella.
Questo ti darà i dati che stai cercando:
select
account, bookdate, amount,
sum(amount) over (partition by account order by bookdate) running_total
from t
/
Questo creerà una vista per mostrarti i dati come se fosse una tabella:
create or replace view t2
as
select
account, bookdate, amount,
sum(amount) over (partition by account order by bookdate) running_total
from t
/
Se hai davvero bisogno del tavolo, intendi che ne hai bisogno costantemente aggiornato? o solo una tantum? Ovviamente se è una tantum puoi semplicemente "creare una tabella come seleziona" usando la query sopra.
I dati di test che ho usato sono:
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;
modifica:
dimenticato di aggiungere; hai specificato che volevi che la tabella fosse ordinata - questo non ha davvero senso e mi fa pensare che tu intenda davvero che volevi la query/vista - l'ordinamento è il risultato della query che esegui, non qualcosa che è inerente in la tabella (ignorando le tabelle organizzate indici e simili).