SQL 2012 - Funções LEAD e LAG

 
Neste post irei apresentar mais 2 novas funções do SQL 2012, LEAD e LAG, que fazem parte das Analytic Functions.
LEAD - A function LEAD é utilizada para ler o valor da próxima linha. Quando a próxima linha não existir retorna NULL.
LAG - A function LAG é similar a function LEAD, porém ao invés de retornar o próximo valor ela retorna o valor anterior.
Isto é um pedido antigo de desenvolvedores, desde o surgimento da cláusula OVER.
 
Vamos ver na prática. Criaremos uma tabela onde armazena a #Cidade e a localização dela em relação a Brasília.
 
 
CREATE TABLE #Cidade
(
    Nome#Cidade varchar(50),
    LocalizacaoKM int
)
GO
Insert into #Cidade values('Brasília',0), ('Cristalina',132), ('Paracatu',239), ('Três Marias',474), ('Belo Horizonte',742), ('Governador Valadares',1064)
GO
 
 
--// LEAD - A function LEAD é utilizada para ler o valor da próxima linha. Quando a próxima linha não existir retorna NULL.
--// Usando a função LEAD vamos ver os trechos da viagem
 
SELECT Nome#Cidade, LocalizacaoKM Inicial, LEAD(LocalizacaoKM) OVER(ORDER BY LocalizacaoKM) As Final
FROM #Cidade
ORDER BY LocalizacaoKM
 
 
--// LAG - A function LAG é similar a function LEAD, porém ao invés de retornar o próximo valor ela retorna o valor anterior.
--// Agora vamos usar a função LAG para ver a volta
 
SELECT Nome#Cidade, LocalizacaoKM Inicial, LAG(LocalizacaoKM) OVER(ORDER BY LocalizacaoKM) As Final
FROM #Cidade
order by LocalizacaoKM 
 
Neste post irei apresentar mais 2 novas funções do SQL 2012, LEAD e LAG, que fazem parte das Analytic Functions.
LEAD - A function LEAD é utilizada para ler o valor da próxima linha. Quando a próxima linha não existir retorna NULL.
LAG - A function LAG é similar a function LEAD, porém ao invés de retornar o próximo valor ela retorna o valor anterior.
Isto é um pedido antigo de desenvolvedores, desde o surgimento da cláusula OVER.
 
Vamos ver na prática. Criaremos uma tabela onde armazena a #Cidade e a localização dela em relação a Brasília.
 
 
CREATE TABLE #Cidade
(
    Nome#Cidade varchar(50),
    LocalizacaoKM int
)
GO
Insert into #Cidade values('Brasília',0), ('Cristalina',132), ('Paracatu',239), ('Três Marias',474), ('Belo Horizonte',742), ('Governador Valadares',1064)
GO
 
 
--// LEAD - A function LEAD é utilizada para ler o valor da próxima linha. Quando a próxima linha não existir retorna NULL.
--// Usando a função LEAD vamos ver os trechos da viagem
 
SELECT Nome#Cidade, LocalizacaoKM Inicial, LEAD(LocalizacaoKM) OVER(ORDER BY LocalizacaoKM) As Final
FROM #Cidade
ORDER BY LocalizacaoKM
 
 
--// LAG - A function LAG é similar a function LEAD, porém ao invés de retornar o próximo valor ela retorna o valor anterior.
--// Agora vamos usar a função LAG para ver a volta
 
SELECT Nome#Cidade, LocalizacaoKM Inicial, LAG(LocalizacaoKM) OVER(ORDER BY LocalizacaoKM) As Final
FROM #Cidade
order by LocalizacaoKM