sql >> Database teknologi >  >> RDS >> Oracle

Sådan får du oplysninger om tidligere registreringer

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 .




  1. Overkompliceret oracle jdbc BLOB-håndtering

  2. Sammenkæd streng med feltværdi i MySQL

  3. Hvad er den nemmeste måde at importere en ny tabel til MySQL v5 fra CSV?

  4. Betyder at OPDATERE HVOR værdien er I Underforespørgsel, der har GROUP BY, så der ikke er nogen race-betingelsesproblemer?