【SQL】利用Row_Number() 实现分组查询
有一表如左图,现在需要实现查询每个组(groupid)的前两条记录。如何实现?
第一种方式用union all 这个不解释。不过在高版本SQL Server中利用Row_Number()函数可以实现,语句如下:
SELECT * FROM ( SELECT ROW_NUMBER() OVER(PARTITION BY groupid ORDER BY id) AS rowid,* FROM dbo.test) x WHERE rowid<3
原理:x表的内容就是根据groupid分组得到的结果,每个rowid索引在各个组中增加,例如 组1 rowid 为1 2 3,组2 rowid 非4 5 6也是从1 2 3开始的。所以,在查询结果如下:
本文出自 “Pz的技术实训基地” 博客,请务必保留此出处http://panzi.blog.51cto.com/4738203/1617511
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。