若是我想获得这样一个结果集:分组排序,而且每组限定记录集的数量,用一条SQL语句能办到吗?spa
好比说,我想找出学生期末考试中,每科的前3名,并按成绩排序,只用一条SQL语句,该怎么写?.net
表[TScore]的结构code
code 学号 charblog
subject 科目 int排序
score 成绩 intget
能够这样写:引用
SELECT [code]
,[subject]
,[score]
FROM (
SELECT *
,RANK() OVER(PARTITION BY subject ORDER BY score DESC) AS Row
FROM TScore
) AS a
WHERE Row <= 3 ;co
引用自:http://blog.csdn.net/leftfist/article/details/6203254tar