轉自: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]