en un artículo anterior cubrí el uso de filas anteriores y siguientes en la cláusula over. Para este ejemplo, voy a usar la misma base de datos y tablas que creé en el ejemplo anterior para mostrar filas ilimitadas que preceden y siguen.,

una de las nuevas características disponibles en TSQL en SQL Server 2012 son las opciones ROWS unbounded PRECEDING y ROWS unbounded FOLLOWING. La opción UNBOUNDED está disponible cuando se utilizan las opciones anterior y siguiente. Así es como funcionan<

ROWS unbounded PRECEDING

-- ROWS UNBOUNDED PRECEDINGselect Year, DepartmentID, Revenue, min(Revenue) OVER (PARTITION by DepartmentID ORDER BY ROWS UNBOUNDED PRECEDING) as MinRevenueToDatefrom REVENUEorder by departmentID, year;

en este ejemplo, MinRevenueToDate muestra los ingresos más bajos para esta fila y todas las filas anteriores ordenadas por fecha en el ID de Departamento actual.

Puede ver que la fila 1 establece el MinRevenueToDate en 10030, y no cambia hasta la fila 7 con un año de ingresos más bajo.,

entonces la fila 16 comienza de nuevo para un nuevo departamento con los ingresos corrientes más bajos hasta la fecha. Luego, la fila 21 se restablece a un número de ingresos más bajo.

ROWS unbounded FOLLOWING

ahora para el ejemplo de unbounded FOLLOWING:

-- ROWS UNBOUNDED FOLLOWINGselect Year, DepartmentID, Revenue, min(Revenue) OVER (PARTITION by DepartmentID ORDER BY ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) as MinRevenueBeyondfrom REVENUEorder by departmentID, year;

donde puede ver que el Min(Revenue) se calcula sobre todas las filas desde la fila actual hasta el final del conjunto particionado por el departmentID.,

la opción UNBOUNDED es muy útil para determinar un cálculo desde el principio de un conjunto hasta la fila actual, o desde la fila actual hasta el final de un conjunto o grupo.

tenga en cuenta que esta función se introdujo en SQL Server 2012 y no está disponible en ediciones anteriores.

enlaces relacionados

  • SQL Query Training
  • Cte Data Paging
  • Over Clause with ROWS and RANGE