row_number 函数分组查询

有如下表(test)结构的数据:

Id   VisitTime    StartHour   EndHour   CustName   CustPhone   CustFeedback   AgentId   DelegateId     InsertTime
1  2014-06-30     3               5               jk      13144445555      挺好滴         45454        34343        2014-06-30 15:28:38.400
2 2014-06-12      2               5               jk      13022223333      不错            3333          5555          2014-06-30 15:31:18.987
3 2014-06-12      2               5               jji      13022223333      不错            3333          5555          2014-06-30 15:32:12.437
。。。。。。

。。。。。。

 现在要求根据agentid进行分组,每组显示前3条,根据inserttime降序排列。

思路:用row_number() over(partition by [field] order by [fileld1] ) 函数

SQL语句:

select * from(

select row_number() over(partition by agentid order by InsertTime desc ) as num, agentid,id,VisitTime ,StartHour ,EndHour ,CustName ,CustPhone ,CustFeedback ,DelegateId ,InsertTime from test with(nolock)

where delegateid=45454 ) as result where num >=1 and num<=3

 

posted @ 2014-08-29 16:12  HelloCC  阅读(519)  评论(0)    收藏  举报