假设有一个这样的数据集
Grp | Name (Unique)
A | Joe
B | Bob
C | Jill
B | James
如果每组(A,B,C)大约有 50 个,我如何在不执行类似操作的情况下只返回每个组的前 5 个结果SELECT TOP 5 * FROM TABLE WHERE Grp = 'A' UNION ALL
SELECT TOP 5 * FROM TABLE WHERE Grp = 'B' UNION ALL
SELECT TOP 5 * FROM TABLE WHERE Grp = 'C'
最佳答案
尝试
SELECT Grp, Name FROM(
SELECT Grp, Name, RANK() OVER (Partition By Grp ORDER By Name DESC) as rankname
FROM YourTable)
WHERE rankname <= 5
编辑:我认为这就是你想要的。如果不是,请发表评论,我们可以进行处理。
关于sql-server - 获取每个不同列值的前 5 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14994357/