mssql sqlserver 中获取表中某一字段最新一条记录


摘要:
下文讲述一种常用的业务场景:
用户需要获取最新的一条记录,
但是表中相关列中有很多的重复信息,此时我们需要将表中重复列进行分组排序,然后对分组排序后的数据进行输出,
来达到结果只取最新一条记录的目的


例: 有一张客户销售登记表,里面每一个客户会出现多条记录,
1:获取客户的单次最大订货值
2:获取客户最后一次订货的订货量

 create table A  ([姓名] nvarchar(20),[订单数] int,[订单日期] datetime  )
go
insert into A ([姓名],[订单数],[订单日期]) values ('www.maomao365.com',1900,'2014-5-6')
insert into A ([姓名],[订单数],[订单日期]) values ('www.maomao365.com',1800,'2018-5-6')
insert into A ([姓名],[订单数],[订单日期]) values ('小张',100,'2013-5-6')
insert into A ([姓名],[订单数],[订单日期]) values ('小明',2600,'2013-1-6')
insert into A ([姓名],[订单数],[订单日期]) values ('小明',1800,'2013-5-6')
insert into A ([姓名],[订单数],[订单日期]) values ('小李',888,'2017-3-6')
go

/*
例:获取客户 获取最大订单数的记录信息
*/
select * from (
select row_number() over (Partition By [姓名] order by [订单数] desc)as keyId,* from A 
) as [A2] where [A2].keyId=1 
/*
例:获取客户 最近一次订货的记录信息
*/
select * from (
select row_number() over (Partition By [姓名] order by [订单日期] desc)as keyId,* from A 
) as [A2] where [A2].keyId=1 

go
truncate table A
drop     table A 
mssql_sqlserver_分组查询_只取最新一条记录

mssql_sqlserver_分组查询_只取最新一条记录