For at trække Random_1 til den foregående dato, skal du bruge LAG()
funktion, som sådan:
select ... , lag(t1.random_1) over (order by t1.date_key), .....
from table1 t1 join table2 t2 on t1.date_key = t2.date_key
...
(og det samme for de andre kolonner). Bemærk, at resultatet af LAG()
vil selvfølgelig være NULL
for den tidligste række - da der ikke er nogen "forrige" værdi. Hvis du vil have noget andet til den første række, skal du pakke alt ind i en COALESCE()
.
Også, hvis du har id
er af en eller anden art, og du deltager med id
samt, så ønsker du ikke at blande datoer for forskellige id'er. LAG()
funktioner (og næsten alle andre analytiske funktioner) giver dig mulighed for at partition by id
udover bestilling efter dato. Du kan læse definitionen og eksemplerne i Oracle-dokumentationen
.