我正在尝试创建一个查询,将查询表中每个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
答案 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