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]