您好我正试图通过使用得分获得比赛的前十名获胜者。问题是当有两个用户具有相同的分数时,例如我只有前9名有效(如果有两个前三个分数,则应该返回11个记录,其余的是唯一的例子)......
我不确定如何解决这个问题,并希望得到一些指导。
先谢谢,
伊恩
答案 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
答案 1 :(得分:0)
顶级语法允许联系
[
TOP (expression) [PERCENT]
[ WITH TIES ]
]
你试过吗?
答案 2 :(得分:0)
你想这样做:
SELECT TOP(10) WITH TIES
FirstName, LastName, score
FROM winners
ORDER BY score;
有关详细信息,请参阅TOP (Transact-SQL)