Microsoft SQL Server选择Top N组

时间:2016-08-08 03:05:21

标签: sql sql-server sql-server-2008 select

关于如何从每个组中选择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实现此目的?

3 个答案:

答案 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