Cześć,
funkcja okna wydaje się być stworzona do Twojego problemu ;-)
Stworzyłem taką oto tabelę:
create table test6 (
id int not null primary key,
date1 datetime
)
insert into test6(id,date1)
values
(1,'20101010'),
(2,'20111010'),
(3,'20120202'),
(4,'20130505');
Teraz wybierając wszystkie rekordy z tej tabeli otrzymujemy:
Teraz stosujemy funkcje okna+datediff:
select id,date1, datediff (month,date1,lead(date1,1) over (order by date1)) as różnicawmiesiącachmiędzyobecnymwierszemijednympozniej
from test6
Słowo wyjaśnienia, używasz funkcji datediff, która obliczy Ci różnice(w tym przypadku w miesiącach, ale możesz to zmienić) między 2 datami.
funkcja okna lead(date1,1) oznacza, że zostanie pobrana data(date1) z jednego wiersza później od obecenego z atrybutu/kolumny date1.
Żeby wszystko było jasne:
datediff(miesiąc/rok/dzień i kilka jeszcze innych opcji (wybierz właściwą), "data z obecnego wiersza w tabeli", 'data z wiersza z tabeli jednego później').
wynik:
Pozdrawiam, i w razie czego pytaj ;-)
EDIT:Używam SQL SERVER, ale z łatwością to zamienisz na Oracle.