Robert Żwirski

Robert Żwirski programista, Black
Red White S.A.

Temat: problem z zapytaniem (Oracle)

Witam wszystkich, brakuje mi pomysłłu na jeden select. Chodzi o cos takiego : mam przykładową tablicę

select data,kwota,termin from test_sald order by data
DATA KWOTA TERMIN
07/09/01 1000 07/09/04
07/09/02 500 07/09/04
07/09/03 800 07/09/05
07/09/04 1200 07/09/05
07/09/05 100 07/09/08
07/09/06 1400 07/09/08

chciałbym policzyc sumę narastająco (po kwocie) oraz sume dla kwoty po terminie czyli
DATA KWOTA TERMIN SUMA PO TERMINIE
2007-09-01 1000 2007-09-04 1000 0
2007-09-02 500 2007-09-04 1500 0
2007-09-03 800 2007-09-05 2300 0
2007-09-04 1200 2007-09-05 3500 0
2007-09-05 100 2007-09-08 3600 1500
2007-09-06 1400 2007-09-08 5000 3800

select data,kwota,termin, SUM(kwota) OVER(ORDER BY data
ROWS BETWEEN UNBOUNDED PRECEDING
AND CURRENT ROW) suma from test_sald order by data;

i moje pytanie , czy ktos ma moze pomysł na zdefiniowanie okna (over range, rows) aby wyliczyc tę kwotę po terminie ?

Pozdrawiam

konto usunięte

Temat: problem z zapytaniem (Oracle)

Nie mam teraz Oracla przed soba wiec nie mam jak sprawdzic, ale nie da sie przypadkiem tak?

select
data,
kwota,
termin,
(select sum(t2.kwota) from test_sald t2 where t1.data>=t2.data) suma,
(select sum(t3.kwota) from test_sald t3 where t1.data>t3.termin) "po terminie"
from test_sald t1
order by data

Pole SUMA wykrzaczy sie jak bedziesz mial 2 ksiegowania w ten sam dzien :) Jakos trzeba by bylo to inaczej obejsc jezeli taka sytuacja moze miec miejsce (jakis narastajacy ID?)
Robert Żwirski

Robert Żwirski programista, Black
Red White S.A.

Temat: problem z zapytaniem (Oracle)

wlasnie chciałem uniknąc takich podzapytań, na bazie prod. dane pobierane są z dużej tablicy i chodzi tez o to aby było to wydajne i skoro oracle wprawadził "cudowne" funkcje analityczne to myslałem ze można by ich użyć :) dzięki za odpowiedź
Dariusz Romanowski

Dariusz Romanowski Analityk Business
Intelligence

Temat: problem z zapytaniem (Oracle)

Robert Żwirski:
wlasnie chciałem uniknąc takich podzapytań, na bazie prod. dane pobierane są z dużej tablicy i chodzi tez o to aby było to wydajne i skoro oracle wprawadził "cudowne" funkcje analityczne to myslałem ze można by ich użyć :) dzięki za odpowiedź

Witam,

spróbuj tak:

select
SUM(kolumna1) OVER (PARTITION BY kolumna2 ORDER BY kolumna2)
from
tabela

Następna dyskusja:

ORACLE problem z LISTENER'em




Wyślij zaproszenie do