Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como obter informações de registros anteriores


Para extrair Random_1 para a data anterior, você usaria o LAG() função, assim:
select ... ,  lag(t1.random_1) over (order by t1.date_key), .....
from  table1 t1 join table2 t2 on t1.date_key = t2.date_key
...

(e o mesmo para as outras colunas). Observe que o resultado de LAG() será, é claro, NULL para a primeira linha - já que não há valor "anterior". Se você quiser algo mais para a primeira linha, envolva tudo dentro de um COALESCE() .

Além disso, se você tiver id 's de algum tipo e você entra por id também, então você não quer misturar datas para ids diferentes. O LAG() funções (e quase todas as outras funções analíticas) permitem que você partition by id além de ordenar por data. Você pode ler a definição e os exemplos na documentação do Oracle .