Seleccione los 10 mejores registros para cada categoría
Quiero devolver los 10 registros principales de cada sección en una consulta. ¿Alguien puede ayudarme con cómo hacerlo? La sección es una de las columnas de la tabla.
La base de datos es SQL Server 2005. Quiero devolver los 10 primeros por fecha introducida. Las secciones son comerciales, locales y destacadas. Para una fecha en particular, solo quiero las (10) filas comerciales superiores (entrada más reciente), las (10) filas locales superiores y las (10) funciones principales.
Aceptado
Si está utilizando SQL 2005, puede hacer algo como esto...
SELECT rs.Field1,rs.Field2
FROM (
SELECT Field1,Field2, Rank()
over (Partition BY Section
ORDER BY RankCriteria DESC ) AS Rank
FROM table
) rs WHERE Rank <= 10
Si su RankCriteria tiene vínculos, entonces puede devolver más de 10 filas y la solución de Matt puede ser mejor para usted.
En T-SQL, haría:
WITH TOPTEN AS (
SELECT *, ROW_NUMBER()
over (
PARTITION BY [group_by_field]
order by [prioritise_field]
) AS RowNo
FROM [table_name]
)
SELECT * FROM TOPTEN WHERE RowNo <= 10