Seleccione los 10 mejores registros para cada categoría

Resuelto jbcedge asked hace 16 años • 0 respuestas

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.

jbcedge avatar Oct 07 '08 09:10 jbcedge
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.

Darrel Miller avatar Oct 07 '2008 02:10 Darrel Miller

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
Phil Rabbitt avatar Jun 25 '2012 10:06 Phil Rabbitt