Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wählen Sie die 10 besten Datensätze für jede Kategorie aus

Wenn Sie SQL 2005 verwenden, können Sie so etwas tun ...

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

Wenn Ihr Rangkriterium Unentschieden aufweist, können Sie mehr als 10 Zeilen zurückgeben, und Matts Lösung ist möglicherweise besser für Sie.