假设有一个像这样的数据集
Group | Name (Unique)
A | Joe
B | Bob
C | Jill
B | James
如果每组中有大约50个(A,B,C),我如何在不执行此类操作的情况下返回每组中前5名的结果
SELECT TOP 5 * FROM TABLE WHERE GROUP = 'A' UNION ALL
SELECT TOP 5 * FROM TABLE WHERE GROUP = 'B' UNION ALL
SELECT TOP 5 * FROM TABLE WHERE GROUP = 'C'
最好不要使用光标。
答案 0 :(得分:7)
尝试
SELECT GROUP, Name FROM(
SELECT Group, Name, RANk() OVER (Partition By GROUP ORDER By Name DESC) as rankname
FROM YourTable)
WHERE rankname <= 5
编辑:我认为这就是你想要的。如果不是,只需评论,我们就可以开展工作。