La función LAG en SQL Server es una función de Windows introducida en SQL Server 2012. Esta función le permite obtener los datos de filas anteriores según el valor de compensación especificado. Piense en la función LAG como la capacidad de acceder a los datos de las filas anteriores desde la fila actual.
Por ejemplo, desde la fila actual, puede acceder a la fila anterior, que se convierte en la fila actual, y puede acceder a la fila anterior, etc.
En este artículo, aprenderemos cómo usar la función LAG en SQL Server utilizando varios ejemplos.
Función SQL Server Lag ()
Expresamos la sintaxis de la función como:
Lag (expresión, offset [, predeterminado])Parámetros de función y valor de retorno
En la sintaxis anterior, tenemos los siguientes parámetros:
La función devuelve el tipo de datos de la expresión escalar.
Ejemplos de retraso de SQL Server
Veamos un ejemplo práctico para comprender mejor cómo usar la función de retraso. Comencemos agregando datos de muestra como se muestra:
Crear base de datos SampleDB;El conjunto de consultas anterior debe devolver datos como:
Ejecute la función LAG en la columna DBName como se muestra en la consulta de ejemplo a continuación:
SELECCIONAR *, LAG (DBNAME, 1) Over (Order by dbName) como anterior_db de lag_func;La consulta anterior devuelve una salida como:
Aviso, la primera fila contiene un valor nulo, ya que no tiene un valor anterior.
Ejemplo 2:
En lugar de obtener un valor nulo donde la fila no contenga una fila anterior, podemos establecer un valor predeterminado, como se muestra en la consulta de ejemplo a continuación:
Seleccione DBName, LAG (DBNAME, 1, 'N/A')La consulta anterior devuelve una salida similar a la anterior. Sin embargo, en lugar de NULL, obtenemos la cadena especificada.
Ejemplo 3: Valor de compensación personalizado
También podemos obtener los valores en un valor de desplazamiento personalizado. Por ejemplo, para obtener el valor de tres filas anteriores, podemos usar la consulta:
Seleccione DBNAME, LAG (DBNAME, 3, 'N/A')El código de ejemplo anterior debe devolver el resultado como:
Aquí, las primeras 3 columnas son nulas a medida que los valores de desplazamiento van más allá del alcance de las filas disponibles.
Ejemplo 4: Partición por
Podemos crear particiones lógicas de datos relacionados utilizando la partición por cláusula. Luego podemos aplicar la función de retraso a cada partición.
Considere el ejemplo a continuación:
Seleccione DBName, Paradigm, LAG (DBName, 1, 'N/A')La consulta anterior devuelve un conjunto de consultas de ejemplo como:
La consulta crea 6 particiones basadas en el paradigma en el resultado anterior. En cada partición, la función de retraso obtiene la fila anterior.
Conclusión
Este artículo le enseñó cómo usar la función de retraso de SQL Server para recuperar la fila anterior de un conjunto resultante.
Gracias por leer!