Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak uzyskać informacje o poprzednich rekordach

Aby wyciągnąć Random_1 dla poprzedniej daty, użyjesz LAG() funkcja, jak tak:

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

(i to samo dla pozostałych kolumn). Zauważ, że wynik LAG() oczywiście będzie NULL dla najwcześniejszego wiersza - ponieważ nie ma „poprzedniej” wartości. Jeśli chcesz czegoś innego dla pierwszego wiersza, zawiń wszystko w COALESCE() .

Również, jeśli masz id i dołączasz przez id również nie chcesz mieszać ze sobą dat dla różnych identyfikatorów. LAG() funkcje (i prawie wszystkie inne funkcje analityczne) pozwalają na partition by id oprócz zamawiania według daty. Możesz przeczytać definicję i przykłady w dokumentacji Oracle .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. oracle sql:zaktualizuj, jeśli istnieje, wstawiaj jeszcze

  2. Łączenie 2 if block i tworzenie pojedynczego zapytania

  3. Oracle Concurrent Manager — CP Analyzer dla pakietu E-Business Suite

  4. sprawdź poprawną datę, która jest zadeklarowana w varchar2

  5. Jak odjąć 2 daty w Oracle, aby uzyskać wynik w godzinach i minutach?