sql >> Database teknologi >  >> RDS >> Oracle

Løbende total efter grupperede poster i tabel

Har du virkelig brug for det ekstra bord?

Du kan få de data, du har brug for, med en simpel forespørgsel, som du selvfølgelig kan oprette som en visning, hvis du vil have den til at se ud som en tabel.

Dette vil give dig de data, du leder efter:

select 
    account, bookdate, amount, 
    sum(amount) over (partition by account order by bookdate) running_total
from t
/

Dette vil oprette en visning, der viser dig dataene, som om det var en tabel:

create or replace view t2
as
select 
    account, bookdate, amount, 
    sum(amount) over (partition by account order by bookdate) running_total 
from t
/

Hvis du virkelig har brug for bordet, mener du så, at du har brug for det konstant opdateret? eller bare en enkelt gang? Hvis det er en enkelt gang, kan du naturligvis bare "opret tabel som udvalgt" ved hjælp af ovenstående forespørgsel.

Testdata jeg brugte er:

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;

rediger:

glemte at tilføje; du har angivet, at du ønskede, at tabellen skulle bestilles - det giver ikke rigtig mening, og får mig til at tro, at du virkelig mener, at du ville have forespørgslen/visningen - bestilling er et resultat af den forespørgsel, du udfører, ikke noget, der er iboende i tabellen (ignorerer Indeks organiserede tabeller og lignende).



  1. Vil du inkludere overskrifter, når du bruger SELECT INTO OUTFILE?

  2. opdater flere poster i flere indlejrede tabeller i Oracle

  3. Databaseproblem, hvordan man gemmer skiftende datastruktur

  4. Hvordan forespørger jeg efter noget, der starter med bestemte tegn?