mssql sqlserver sql数据分组后,取分组后最新一条记录的方法分享

转自:http://www.maomao365.com/?p=8223


 

 

摘要:

 

    下文讲述对通过举例的方式分享,“sql分组后,取最新一条记录的方法”,如下所示:

 

     实验环境:sql server 2008 R2 

 


 

例:

 

  取销售订单中,每个客户最近的一条订单记录。

 

 实验思路:

 

  使用row_number() 对数据进行群组,群组内按照订单日期倒序排序,并生成新的群组内编号  

 

 
 create table [maomao365](orderNo varchar(30),custName nvarchar(30),
     qty int, amount decimal(18,2),
     orderDate datetime)
    go
    ---生成订单数据
    insert into [maomao365](orderNo,custName,qty,amount,orderDate)
     values
     ('001','深圳A集团',8,10,'2018-1-1'),
     ('002','深圳A集团',7,1008,'2018-1-2'),
     ('003','深圳C集团',6,100,'2018-1-3'),
     ('004','深圳C集团',12,1090,'2018-1-4'),
     ('005','深圳B集团',5,108,'2018-1-5'),
     ('006','深圳B集团',16,190,'2018-1-6'),
     ('007','深圳D集团',10,90,'2018-1-7'),
     ('008','深圳D集团',4,40,'2018-1-8'),
     ('009','深圳E集团',6,60,'2018-1-9')
     go
     ---显示每个客户最新一条订单记录
     select * from 
     (
       select row_number() over(partition by [custName] order by [orderDate] desc ) as keyId,* from [maomao365]   
     )
     as t 
     where t.keyId =1 
    go
    
   go 
   truncate table [maomao365]
   drop       table [maomao365]

 

 

posted @ 2019-02-16 17:22  Adeal2008  阅读(2337)  评论(0编辑  收藏  举报