In Analysefunktionen müssen Sie den Fensterbereich angeben. Standardmäßig ist es between unbounded preceding and current row
, von dem ich annehme, dass es selbsterklärend ist.
Im Grunde passiert das, wenn Sie partition by customer_id order by valid_from asc
angeben :
- Oracle übernimmt alle Zeilen, die mit der
customer id
der aktuellen Zeile übereinstimmen - Er ordnet sie in aufsteigender Reihenfolge nach
valid_from
- Es bildet ein Fenster, das mit mindestens
valid_from
beginnt Datum und endet mitvalid_from
der aktuellen Zeile . - Er wertet
last_value
aus , die denvalid_from
Ihrer aktuellen Zeile zurückgibt .
Was Sie tun müssen, ist einen fortlaufenden Bereich anzugeben:
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