[SQL 2012] Funções LEAD e LAG
Neste post irei apresentar mais 2 novas funções
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
Insert into Cidade values('Brasília',0), ('Cristalina',132), ('Paracatu',239), ('Três Marias',474), ('Belo Horizonte',742), ('Governador Valadares',1064)
Usando a função LEAD vamos ver os trechos da viagem
SELECT NomeCidade, LocalizacaoKM Inicial, LEAD(LocalizacaoKM) OVER(ORDER BY LocalizacaoKM) As Final
Agora vamos usar a função LAG para ver a volta
SELECT NomeCidade, LocalizacaoKM Inicial, LAG(LocalizacaoKM) OVER(ORDER BY LocalizacaoKM) As Final

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.
Related articles
How to call a function inside my SQL Server?
Database function function and function
How to create an SQL to do multiple inserts in one statement?
Practical examples
Short: SQL Update using begin try and begin transaction
Commit and Rollback command
Getting the last 120 months of data from my database
how to do it in SQL language?
How to create a variable to use the IN clause SELECT query SQL?
Database code part
SQL Update using Try Catch
Na prática com exemplo real
Comando SQL Update usando Try Catch
Na prática e no database
SELECT Format Date Time for many countries
It is a good tip to use day by day
Creating a SiteMap using SQL Database
Como indexar melhor meu site e links?
Transformando linhas em colunas usando SQL Server
veja como funciona
Ozimar Henrique