MSSQL选择前10名但包含具有重复值的列

时间:2012-06-07 10:57:04

标签: sql-server

您好我正试图通过使用得分获得比赛的前十名获胜者。问题是当有两个用户具有相同的分数时,例如我只有前9名有效(如果有两个前三个分数,则应该返回11个记录,其余的是唯一的例子)......

我不确定如何解决这个问题,并希望得到一些指导。

先谢谢,

伊恩

3 个答案:

答案 0 :(得分:3)

  如果有两个前3个分数,

应该返回11个记录

听起来您想使用dense_rank

这将为您提供排名前10位的所有行。

select T.Score
from (
       select Score,
              dense_rank() over(order by Score) as rn
       from YourTable
     ) T
where T.rn <= 10

SE-Data

答案 1 :(得分:0)

顶级语法允许联系

[ 
    TOP (expression) [PERCENT]
    [ WITH TIES ]
]

你试过吗?

http://msdn.microsoft.com/en-us/library/ms189463.aspx

答案 2 :(得分:0)

你想这样做:

SELECT TOP(10) WITH TIES
FirstName, LastName, score
FROM winners
ORDER BY score;

有关详细信息,请参阅TOP (Transact-SQL)