sql >> Databasteknik >  >> RDS >> Oracle

Hur man får information om tidigare rekord

För att dra Random_1 för föregående datum skulle du använda LAG() funktion, som så:

select ... ,  lag(t1.random_1) over (order by t1.date_key), .....
from  table1 t1 join table2 t2 on t1.date_key = t2.date_key
...

(och samma sak för de andra kolumnerna). Observera att resultatet av LAG() kommer naturligtvis att vara NULL för den tidigaste raden - eftersom det inte finns något "föregående" värde. Om du vill ha något annat för den första raden, linda allt inom en COALESCE() .

Dessutom, om du har id är av något slag och du går med med id också, då vill du inte blanda ihop datum för olika id:n. LAG() funktioner (och nästan alla andra analytiska funktioner) låter dig partition by id förutom att beställa efter datum. Du kan läsa definitionen och exemplen i Oracle-dokumentationen .




  1. SQL tidsskillnad mellan två datum resulterar i hh:mm:ss

  2. Rails 3.1:Fråga efter postgres inom ett tidsintervall

  3. bilder laddas upp men jag kan inte se dem

  4. SQL:Hämtar den totala summan som underval mycket långsam