在SQL Server 2008中为每个不同的ID选择前n条记录

时间:2010-07-29 15:30:04

标签: sql-server-2008

我正在尝试创建一个查询,将查询表中每个id的前10条记录。

这样的事听起来:

select distinct top 2 id, column1 from table group by id, column1


ID        Column1
1         ab
1         ac
1         ad
2         df
2         gf
2         dfdf
2         hgf
3         wa
3         hgh
3         dfgg
4         fgfgg

因此,上表将返回每个ID的前两个结果,如下所示:

ID        Column1
1         ab
1         ac
2         df
2         gf
3         wa
3         hgh
4         fgfgg

1 个答案:

答案 0 :(得分:3)

ROW_NUMBER()对于此类事情非常有用。

http://msdn.microsoft.com/en-us/library/ms186734.aspx

SELECT * FROM (
SELECT 
    ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID) as RowNum, 
    ID, 
    Column1
FROM
    Table
) MyData
WHERE RowNum < 10