Inserir data fim na consulta a partir da data da próxima linha

15/05/2020

0

Prezados,

Estou com um problema e não sei é possível resolver diretamente da consulta SQL, que é o seguinte. Tenho uma tabela PRECOS que contém registros de preços como segue:

ID TIMESTAMP FX_PREÇO
20207597 02JAN2020:10:14:26.760004 310
20207597 05FEV2020:10:18:14.350851 350
20207597 19ABR2020:10:19:16.342474 390
20207597 05MAI2020:23:17:45.972825 300
20207695 31JUL2017:13:37:07.598284 390
20207695 06AGO2017:13:38:39.816238 220
20207695 09SET2018:13:39:17.051847 290
20207695 10OUT2018:13:39:39.956817 250
20207695 20SEP2017:12:23:56.210966 290
20207695 30JUL2018:20:00:33.824793 290
20207695 12SEP2019:23:17:45.972825 200

A tabela VENDAS contém várias vendas. Ex.: venda efetuada em 20.04.2020 cujo ID do preço é 20207597, ou seja, a FX_PREÇO (campo da tabela PRECOS) para essa venda foi 390.
Sendo assim, gostaria de fazer uma data fim na tabela PRECOS para criar uma range de datas de validade de cada FX_PREÇO e então levar essa faixa para consulta É possível?
Eduardo

Eduardo

Responder

Posts

15/05/2020

Emerson Nascimento

é possível, sim.
nos bancos de dados relacionais há funções chamadas de 'funções de janela', e agem dentro do resultset obtido na consulta.
para o caso apresentado, a função deverá ser lead()
SELECT
    ID, TIMESTAMP, 
    LEAD(TIMESTAMP, 1, 0)-1 OVER (PARTITION BY ID ORDER BY TIMESTAMP) TIMEST_FIM,
    FX_PREÇO
FROM PRECOS
ORDER BY ID

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar