Dúvida com manipulação de Datas em Oracle PL/SQL

blackyy

Power Member
Boa tarde,

Estou com uma dificuldade em Oracle PL/SQL. Tenho uma tabela com três atributos o Número, Data de entrada, data de saida. Pretendo para cada um dos números ir buscar a data anterior caso o número anterior seja igual ao atual. Estou a utilizar a seguinte query.

Código:
select numero, dt_ent, dt_sai,
LAG (dt_sai,1) over (ORDER BY numero,dt_ent) AS DataAnterior
from DATAS;




Ela faz o que me pede, mas a questão é que eu queria que ele só me retornasse a data anterior quando o mesmo número existe mais que uma vez.


A query está-me a devolver isto:


NUMERO DT_ENT DT_SAI DataAnterior
10000032 10.01.01 10.01.11 NULL
10000236 10.01.07 10.01.20 10.01.11
10000862 10.01.11 10.02.04 10.01.08
10000891 10.01.11 10.01.12 10.02.04
10000924 10.01.11 10.01.21 10.01.12
10001055 10.01.12 10.01.13 10.01.21
10001055 10.01.13 10.01.18 10.01.13
10001055 10.01.20 10.01.21 10.01.18

Eu pretendia que ela me devolvesse algo deste género.


NUMERO DT_ENT DT_SAI DataAnterior
10000032 10.01.01 10.01.11 NULL
10000236 10.01.07 10.01.20 NULL
10000862 10.01.11 10.02.04 NULL
10000891 10.01.11 10.01.12 NULL
10000924 10.01.11 10.01.21 NULL
10001055 10.01.12 10.01.13 NULL
10001055 10.01.13 10.01.18 10.01.13
10001055 10.01.20 10.01.21 10.01.18


Como poderei fazer isto?

Cumprimentos
 
Back
Topo