Como utilizar las funciones LAG LEAD en nuestros códigos SQL: Funciones LAG y LEAD en Transact-SQL SQL Server
Como obtener un valor anterior o posterior de una fila?
Las funciones Lad and Lead nacieron en la versión de sql server 2012, las mismas funcionan para obtener el valor de la fila anterior y posterior en una consulta,(para que quiero eso), en esta parte es donde ponemos a funcionar nuestra imaginación ,cuando estamos en un empleo siempre existen usuarios que necesitan cosas que nunca hemos imaginado pero que resulta ser de utilidad adicional existen múltiples casos para sacar provecho, los cuales detallaremos a continuacion
- Quiero restar el valor del día de ayer con el de hoy (Para medir cambios en muestras de sangre)
- Deseo mirar la variación de mis visitas en mi portal web
- Necesito el porcentaje de ventas del año actual vs el año anterior
- Solo porque quiero hacerlo (Esta es mi favorita ?)
- Porque lo preguntan en el examen de certificación 70-461
Como funcionan?
La función LAG: sirve para extraer valores previos o anteriores, con la posibilidad de especificar si queremos obtener el valor de la fila anterior o la 2da o 3ra, etc, default es 1.
La función Lead: sirve para extraer valores posteriores , con la posibilidad de especificar si queremos obtener el valor de la fila , la 2da o 3ra, etc, default es 1.
Querido lectores, el siguiente código sql, lo ejecutan en la base de datos de ejemplo adventureworks, y pueden validar el codigo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
USE adventureworks GO SELECT s.salesorderid, s.salesorderdetailid, s.orderqty, Lead(salesorderdetailid) OVER ( partition BY salesorderid ORDER BY salesorderdetailid ) LeadValue, Lag(salesorderdetailid) OVER ( partition BY salesorderid ORDER BY salesorderdetailid ) LagValue FROM sales.salesorderdetail s WHERE salesorderid IN ( 43670, 43669, 43667, 43663 ) ORDER BY s.salesorderid, s.salesorderdetailid, s.orderqty GO |
Luego de ejecutar nuestra consulta tendremos el siguiente resultado, el cual nos muestra la utilidad de la función
![Funciones Lad y Lead Funciones Lad y Lead](http://sql-listo.com/wp-content/uploads/2017/02/Capturagg.png)
Examen 70-461
En el examen de certificación existen al menos 2 preguntas sobre este tema una pregunta sobre LAG y otra Sobre LEAD como ayuda para diferenciar una de la otra Lag?y ?Lead