[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
(
NomeCidade 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
Usando a função LEAD vamos ver os trechos da viagem
SELECT NomeCidade, LocalizacaoKM Inicial, LEAD(LocalizacaoKM) OVER(ORDER BY LocalizacaoKM) As Final
FROM Cidade
ORDER BY LocalizacaoKM
Agora vamos usar a função LAG para ver a volta
SELECT NomeCidade, LocalizacaoKM Inicial, LAG(LocalizacaoKM) OVER(ORDER BY LocalizacaoKM) As Final
FROM Cidade
order by LocalizacaoKM desc

Isto é possível porque o SQL 2012 armazena a linha anterior/posterior na memória.
Nas versões anteriores era possível, porém tinha que usar self joins trabalhosos.
A função também aceita outros parâmetros como um valor default quando retornar NULL, e você pode especificar quantas linhas ele deseja saltar para frente ou para trás.
Sign up to our newsletter
Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.