若是我想獲得這樣一個結果集:分組排序,而且每組限定記錄集的數量,用一條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