Recuperando o próximo registro no Oracle PL/SQL
[ad#texto]
Já falamos sobre o comando LAG do PL/SQL, agora e se precisássemos utilizar os valores do próximo registro de uma instrução SELECT?
Semelhante ao LAG temos a função analítica LEAD no Oracle PL/SQL que tem a função de retornar o registro anterior sem precisarmos reprocessar tudo novamente. Veja a sintaxe:
lead ( expression [, offset [, default] ] )
over ( [ query_partition_clause ] order_by_clause )
Veja um exemplo:
select product_id, order_date,
lead (order_date,1) over (ORDER BY order_date) AS next_order_date
from orders;
PRODUCT_ID ORDER_DATE NEXT_ORDER_DATE
1000 25/09/2007 26/09/2007
2000 26/09/2007 27/09/2007
1000 27/09/2007 28/09/2007
2000 28/09/2007 29/09/2007
2000 29/09/2007 30/09/2007
1000 30/09/2007 <NULL>
O uso do LEAD é bem simples, assim como o LAG, agora é fácil trabalhar tanto o registro anterior como o próximo registro de um SELECT, bem útil quando vamos gerar arquivos texto utilizando quebras pela iteração dos registros.