Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Suma bieżąca według zgrupowanych rekordów w tabeli

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).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kombinacja Oracle SQL MIN i MAX z tej samej tabeli

  2. ORACLE — Wybierz opcję Policz w podzapytaniu

  3. Zmień numer daty w Excelu na datę Oracle

  4. Funkcja CONCAT() w Oracle

  5. Jak mogę potwierdzić, że baza danych to Oracle i jakiej wersji używa SQL?