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

Sidste_værdi vinduesfunktion fungerer ikke korrekt

I analytiske funktioner skal du angive vinduesområde. Som standard er det between unbounded preceding and current row , hvilket jeg antager er selvforklarende.

Grundlæggende er dette, hvad der sker, når du angiver partition by customer_id order by valid_from asc :

  1. Oracle tager alle rækker, der matcher den aktuelle rækkes customer id
  2. Den sorterer dem i stigende rækkefølge efter valid_from
  3. Det danner et vindue, der starter med minimum valid_from dato og slutter med den aktuelle rækkes valid_from .
  4. Den evaluerer last_value , som returnerer din nuværende rækkes valid_from .

Det du skal gøre er at angive et løbende interval:

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. to_sql pyodbc count felt forkert eller syntaksfejl

  2. indsæt i mysql-problemet

  3. Vælg vokaler fra en varchar, Oracle PL/SQL

  4. Sådan opbevarer du bedst brugeroplysninger og brugerlogin og adgangskode