如何为每个组选择前x个记录

时间:2012-12-24 19:57:58

标签: sql-server select group-by having

我试过这样的事情

select Id,UserId from myTable group by Id,UserId having COUNT(UserId)<7

现在我要做的是为每个用户ID选择6条记录。但我的方法失败了。

那么正确的语法是什么?

Id是主键聚集索引

1 个答案:

答案 0 :(得分:2)

这应该让你非常接近

WITH    r ( userid, rnk )
      AS ( SELECT   userid, RANK() OVER ( PARTITION BY id ) AS rnk
           FROM     MyTable 
           GROUP BY userid)
SELECT  r.*
FROM    r
WHERE   r.Rank <= 6 
相关问题