Czy naprawdę potrzebujesz dodatkowego stołu?
Możesz uzyskać potrzebne dane za pomocą prostego zapytania, które możesz oczywiście utworzyć jako widok, jeśli chcesz, aby wyglądał jak tabela.
Dzięki temu uzyskasz dane, których szukasz:
select
account, bookdate, amount,
sum(amount) over (partition by account order by bookdate) running_total
from t
/
Spowoduje to utworzenie widoku, który pokaże dane tak, jakby były tabelą:
create or replace view t2
as
select
account, bookdate, amount,
sum(amount) over (partition by account order by bookdate) running_total
from t
/
Jeśli naprawdę potrzebujesz tabeli, czy oznacza to, że potrzebujesz jej stale aktualizowanej? czy tylko jednorazowy? Oczywiście, jeśli jest to jednorazowe, możesz po prostu „utworzyć tabelę jako wybierz” za pomocą powyższego zapytania.
Dane testowe, których użyłem to:
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;
edytuj:
zapomniałem dodać; określiłeś, że chcesz uporządkować tabelę - to nie ma sensu i sprawia, że myślę, że naprawdę chcesz uzyskać zapytanie/widok - porządkowanie jest wynikiem zapytania, które wykonujesz, a nie czymś, co jest nieodłączne tabeli (ignorując tabele zorganizowane według indeksu i tym podobne).