Cómo utilizar sql: 2011 funciones de la ventana

Añadido en SQL: 2011 son cinco funciones de la ventana que evalúan una expresión en una fila R2 que está en algún lugar en el marco de la ventana de la fila actual R1. Las funciones son RETRASO, DIRIGIR, NTH_VALUE, FIRST_VALUE, y LAST_VALUE.

Estas funciones le permiten extraer información de filas especificadas que están dentro del marco de la ventana de la fila actual.

Mirar hacia atrás con la función LAG

los RETRASO función le permite recuperar información de la fila actual en la ventana que está examinando, así como información de otra fila que se especifica que precede a la fila actual.

Supongamos, por ejemplo, que tiene una tabla que registra las ventas totales para cada día del año en curso. Una cosa que usted podría querer saber es cómo las ventas de hoy en comparación con el de ayer. Se podría hacer esto con la RETRASO función, como sigue:

SELECT VentaTotal AS TodaySale, LAG (VentaTotal) OVER (ORDER BY Fecha de Venta) AS PrevDaySaleFROM DailyTotals-

Para cada fila de DailyTotals, Esta consulta una fila lista cifra de ventas totales de esa fila y cifra total de ventas del día anterior. El desplazamiento por defecto es 1, que es la razón por resultado del día anterior se devuelve en lugar de cualquier otro.

Video: Funciones de Fecha DATEADD() Y DATEDIFF() - CURSO SQL SERVER

Para comparar las ventas del día actual a los de una semana antes, se puede utilizar lo siguiente:

SELECT VentaTotal AS TodaySale, LAG (VentaTotal, 7) OVER (ORDER BY Fecha de Venta) AS PrevDaySaleFROM DailyTotals-

Las primeras siete filas en un marco de ventana no tendrán un antecesor que es una semana más. La respuesta predeterminada a esta situación es para devolver un resultado nulo para PrevDaySale. Si prefiere algún otro resultado a un resultado nulo, por ejemplo cero, puede especificar lo que desea obtener en esta situación en lugar del valor nulo por defecto, por ejemplo, 0 (cero), como se muestra aquí:

SELECT VentaTotal AS TodaySale, LAG (VentaTotal, 7, 0) OVER (ORDER BY Fecha de Venta) AS PrevDaySaleFROM DailyTotals-

El comportamiento por defecto es contar filas que tienen un grado de retraso, que en este caso es Venta total, que contiene un valor nulo. Si desea omitir tales filas y contar sólo las filas que tienen un valor real en la medida de retraso, puede hacerlo añadiendo las palabras clave IGNORE NULLS como se muestra en la siguiente variante del ejemplo:

SELECT VentaTotal AS TodaySale, LAG (VentaTotal, 7, 0) IGNORE NULLSOVER (ORDER BY Fecha de Venta) AS PrevDaySaleFROM DailyTotals-

Mirar hacia adelante con la función LEAD

los DIRIGIR función de ventana funciona exactamente de la misma forma en que el RETRASO función opera, excepto que, en lugar de mirar hacia atrás a una fila precedente, que mira hacia adelante a una fila después de la fila actual en el marco de la ventana. Un ejemplo podría ser:

SELECT VentaTotal AS TodaySale, LEAD (VentaTotal, 7, 0) IGNORE NULLSOVER (ORDER BY Fecha de Venta) AS NextDaySaleFROM DailyTotals-

Mira a una fila especificada con la función NTH_VALUE

los NTH_VALUE función es similar a la RETRASO y DIRIGIR funciones, excepto que en lugar de evaluar una expresión en una fila precedente o siguiente de la fila actual, se evalúa una expresión en una fila que está en un desplazamiento especificado a partir de la primera o la última fila en el marco de la ventana.

He aquí un ejemplo:

SELECT VentaTotal AS ChosenSale, NTH_VALUE (VentaTotal, 2) a partir de FIRSTIGNORE NULLSOVER (ORDER BY Fecha de Venta) filas entre 10 precedente y 10 siguientes) AS EarlierSaleFROM DailyTotals-

En este ejemplo, EarlierSale se evalúa como sigue:

  • El marco de la ventana asociada con la fila actual se forma. Incluye los diez precedente y los diez siguientes filas.

  • Venta total se evalúa en cada fila del marco de ventana.

  • IGNORE NULLS se especifica, por lo que cualquier fila que contiene un valor nulo para Venta total se omiten.

  • A partir de la primera valor restante después de la exclusión de las filas que contienen un valor nulo para VentaTotal, avanzar por dos filas (hacia adelante, porque DE PRIMERA se ha especificado).

El valor de EarlierSale es el valor de Venta total de la fila especificada.

Video: Samsung Galaxy Note 3 Tip: Como utilizar la funcion multi window en espanol

Si no desea omitir filas que tienen un valor nulo para Venta total, especificar NULLS RESPETO más bien que IGNORE NULLS. los NTH_VALUE función funciona de manera similar si se especifica Desde el pasado en lugar de DE PRIMERA, pero en lugar de contar hacia adelante desde el primer registro en el marco de la ventana, se cuenta hacia atrás desde el último registro en el marco de la ventana.

El número que especifica el número de filas para contar sigue siendo positiva, a pesar de que usted está contando hacia atrás en lugar de hacia adelante.

Mira a un valor muy específico con FIRST_VALUE y LAST_VALUE

los FIRST_VALUE y LAST_VALUE funciones son casos especiales de la NTH_VALUE función. FIRST_VALUE es equivalente a NTH_VALUE dónde DE PRIMERA se especifica y el offset es 0 (cero). LAST_VALUE es equivalente a NTH_VALUE dónde Desde el pasado se especifica y el offset es 0. Con estos dos, se puede optar por ignorar o respetar los valores nulos.

Artículos Relacionados