miércoles, 21 de enero de 2015

Funciones LAG y LEAD en SQL Server


Recientemente hice el examen 70-461 Querying Microsoft SQL Server 2012, una de las preguntas se refería a las función LAG, en este video de 8 minutos se explica su funcionamiento.
La funciones LAG y LEAD en SQL Server permiten obtener de un campo el valor anterior (LAG) a la fila o el valor posterior (LEAD) a la fila.
En la imagen de abajo tomando como referencia el campo precio de la fila tres podemos ver como estas funciones me permiten tomar el precio de la fila anterior o sea la fila 2 y llamarlo “PrecioAnterior” y luego tomar el precio de la fila siguiente es decir la fila 4 y llamar al resultado “Precio Siguiente”
test
El scrip del ejemplo es el siguiente:
CREATE TABLE PreciosProducto
(NombreProducto VARCHAR(100), FechaEvaluacion DATETIME, Precio MONEY)
GO
INSERT INTO PreciosProducto (NombreProducto,FechaEvaluacion, Precio) VALUES
(‘Pintura Spray Rojo Fuego’,’01-01-2015′, 23.32),
(‘Pintura Spray Rojo Fuego’,’01-02-2015′, 26.11),
(‘Pintura Spray Rojo Fuego’,’01-03-2015′, 25.26),
(‘Pintura Spray Rojo Fuego’,’01-04-2015′, 30.45),
(‘Pintura Spray Rojo Fuego’,’01-05-2015′, 30.20),
(‘Pintura Spray Rojo Fuego’,’01-06-2015′, 31.12),
(‘Pintura Spray Rojo Fuego’,’01-07-2015′, 25.75),
(‘Pintura Spray Rojo Fuego’,’01-08-2015′, 24.21),
(‘Pintura Spray Rojo Fuego’,’01-09-2015′, 25.12),
(‘Pintura Spray Rojo Fuego’,’01-10-2015′, 28.26)
GO
El Query con las funciones de ejemplo que genera la imagen de ejemplo anterior es:
SELECT NombreProducto,FechaEvaluacion,Precio
,LAG(Precio) OVER (ORDER BY FechaEvaluacion) AS PrecioAnterior
,LEAD(Precio) OVER (ORDER BY FechaEvaluacion) AS PrecioSiguiente
FROM PreciosProducto
ORDER BY FechaEvaluacion

No hay comentarios:

Publicar un comentario