Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Total em execução por registros agrupados na tabela


Você realmente precisa da mesa extra?

Você pode obter os dados de que precisa com uma consulta simples, que obviamente pode criar como uma exibição se quiser que apareça como uma tabela.

Isso fornecerá os dados que você está procurando:
select 
    account, bookdate, amount, 
    sum(amount) over (partition by account order by bookdate) running_total
from t
/

Isso criará uma visualização para mostrar os dados como se fossem uma tabela:
create or replace view t2
as
select 
    account, bookdate, amount, 
    sum(amount) over (partition by account order by bookdate) running_total 
from t
/

Se você realmente precisa da tabela, quer dizer que precisa dela constantemente atualizada? ou apenas um fora? Obviamente, se for único, você pode apenas "criar tabela como selecionar" usando a consulta acima.

Os dados de teste que usei são:
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;

editar:

esqueci de adicionar; você especificou que queria que a tabela fosse ordenada - isso realmente não faz sentido e me faz pensar que você realmente quer dizer que queria a consulta/exibição - a ordenação é um resultado da consulta que você executa, não algo inerente a a tabela (ignorando as Tabelas Organizadas por Índice e similares).