sql >> Databáze >  >> RDS >> Oracle

Funkce okna Last_value nefunguje správně

V analytických funkcích musíte zadat rozsah okna. Ve výchozím nastavení je between unbounded preceding and current row , což předpokládám samovysvětlující.

V podstatě se to stane, když zadáte partition by customer_id order by valid_from asc :

  1. Oracle vezme všechny řádky odpovídající customer id aktuálního řádku
  2. Seřadí je vzestupně podle valid_from
  3. Tvoří okno začínající minimem valid_from datum a končící aktuálním řádkem valid_from .
  4. Vyhodnocuje last_value , která vrátí valid_from vašeho aktuálního řádku .

Co musíte udělat, je zadat průběžný rozsah:

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. Mapování pohledu SQL na entitu hibernace jpa

  2. Hibernate Query problém s Informix

  3. PHP eval() kód mezi <?php ?> z databáze

  4. Řízení bezpečnosti dat