关于如何从每个组中选择n行,有很多答案。 但我要找的是从前N组中选择每一行,例如我有以下数据:
formData.stepTwo.firstName
如果我想选择前3组,我的预期结果如下:
id group
1 a
2 a
3 b
4 c
5 c
6 d
7 d
.......
如何使用Microsoft SQL Server 2008实现此目的?
答案 0 :(得分:2)
一种选择是使用一个子查询来选择前N个组:
SELECT t1.id, t1.group
FROM yourTable t1
INNER JOIN
(
SELECT DISTINCT TOP(N) group
FROM yourTable
ORDER BY group
) t2
ON t1.group = t2.group
答案 1 :(得分:1)
您可以按小组rank
排,然后只选择前三位:
int factorial(int number)
{
if (number == 0)
return 1;
else
(number * factorial(number - 1));
}
答案 2 :(得分:0)
@Tim:我刚修改了你的查询。
SELECT t1.id, t1.group
FROM yourTable t1
INNER JOIN
(
SELECT TOP N group
FROM yourTable
GROUP BY group
--ORDER BY group USE IT IF YOU WANT
) t2
ON t1.group = t2.group