Em funções analíticas, você precisa especificar o intervalo da janela. Por padrão, é
between unbounded preceding and current row
, que considero autoexplicativo. Basicamente, isso é o que acontece quando você especifica
partition by customer_id order by valid_from asc
:- O Oracle pega todas as linhas que correspondem ao
customer id
da linha atual - Ele os ordena em ordem crescente por
valid_from
- Ele forma uma janela começando com o mínimo
valid_from
data e terminando comvalid_from
da linha atual . - Avalia
last_value
, que retorna ovalid_from
da sua linha atual .
O que você precisa fazer é especificar um intervalo contínuo:
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