获取特定列值SQL Server的前N个

时间:2014-11-13 16:56:56

标签: sql-server

我有一个我收集统计数据的表,有3列:id,year和points。我想获得每年按点排序的前N行。在真实场景中,有更多列,但如果我可以获得ID和年份,并使用子选择获得其余列。是否有更简单的方法来做到这一点,而不是每年单独做一次?

1 个答案:

答案 0 :(得分:2)

您可以将OVER clausewindow functions一起用于每组结果的前N个

;WITH cte
     AS (SELECT Row_number()
                  OVER(
                    partition BY year
                    ORDER BY points Desc) Rn,
                *
         FROM   tablename)
SELECT *
FROM   cte
WHERE  rn <= 10