2012-12-24 68 views
2

我想是这样的如何选择前X记录各组

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

现在我想做的事就是选择6条每个用户ID。但我的做法失败了。

那么正确的语法是什么?

编号是主键聚集索引

回答

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