sql >> Databasteknik >  >> RDS >> Oracle

Löpande total efter grupperade poster i tabell

Behöver du verkligen det extra bordet?

Du kan få den data du behöver med en enkel fråga, som du självklart kan skapa som en vy om du vill att den ska se ut som en tabell.

Detta ger dig den information du letar efter:

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

Detta kommer att skapa en vy för att visa dig data som om det vore en tabell:

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

Om du verkligen behöver tabellen, menar du att du behöver den ständigt uppdaterad? eller bara en engångsföreteelse? Uppenbarligen om det är en engångsföreteelse kan du bara "skapa tabell som urval" med hjälp av ovanstående fråga.

Testdata jag använde är:

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;

redigera:

glömde att lägga till; du angav att du ville att tabellen skulle beställas - detta är inte riktigt vettigt, och får mig att tro att du verkligen menar att du ville ha frågan/vyn - beställningen är ett resultat av frågan du kör, inte något som är inneboende i tabellen (ignorerar index organiserade tabeller och liknande).



  1. jag behöver konfigurera en django och mysql i pycharm IDE

  2. Hur man tar reda på storleken på index i mysql (inklusive primärnycklar)

  3. Dela upp (explodera) kommaavgränsade kolumnvärden till rader

  4. Avbrutna anslutningar vid användning av node.js/mysql connectionPool