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

Funkcja okna Last_value nie działa poprawnie

W funkcjach analitycznych należy określić zakres okien. Domyślnie jest to between unbounded preceding and current row , co, jak zakładam, nie wymaga wyjaśnień.

Zasadniczo dzieje się tak, gdy określisz partition by customer_id order by valid_from asc :

  1. Oracle pobiera wszystkie wiersze pasujące do customer id bieżącego wiersza
  2. Zamawia je w porządku rosnącym według valid_from
  3. Tworzy okno zaczynające się od minimum valid_from data i kończąca się valid_from bieżącego wiersza .
  4. Ocenia last_value , który zwraca valid_from Twojego bieżącego wiersza .

Musisz tylko określić bieżący zakres:

16:53:00 [email protected]> ed
Wrote file S:\spool\sandbox\BUFFER_SYSTEM_38.sql

  1  select last_value(VALID_FROM) OVER (
  2    partition by customer_id
  3    ORDER BY VALID_FROM asc
  4    range between current row and unbounded following
  5  ) rn
  6* from   t
16:53:21 [email protected]> /

RN
---------------------------------------------------------------------------
04-DEC-13 11.07.01.000000 AM
04-DEC-13 11.07.01.000000 AM
04-DEC-13 11.07.01.000000 AM

Elapsed: 00:00:00.01


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak używać dbms_scheduler do uruchamiania zadania co 30 minut

  2. Transponuj jeden wiersz na wiele wierszy Oracle

  3. Błąd aktualizacji Liquibase

  4. Identyfikator ORA-00972 jest za długi alias nazwa kolumny

  5. Spór o sekwencję RAC