返回每用户的最近订单记录有一订单表结构如下OrderId UserId CreateTimeOrderId是唯一的,UserId是可以重复
返回每用户的最近订单记录
有一订单表结构如下
OrderId UserId CreateTime
OrderId是唯一的,UserId是可以重复的,CreateTime是指下单时间
现要求找出所有用户最近的一笔订单,求帮忙。
比如有用户A和B,A有两条记录,B有三条记录,找出A和B最近的一次交易记录,返回OrderId,UserId,CreateTime
[解决办法]
错了。有问题。 用下面这个
create table tb_order(orderid int,userid int,createtime datetime)
insert tb_order
select 1,1,'2012-09-12 12:00:01'
union select 2,1,'2012-09-12 13:00:01'
union select 3,1,'2012-09-13 13:00:01'
union select 4,2,'2012-09-12 13:00:01'
union select 5,2,'2012-09-13 13:00:01'
union select 6,3,'2012-09-13 13:00:01'
union select 7,3,'2012-09-14 13:00:01'
select a.* from tb_order a join
(select userid,MAX(createtime)createtime from tb_order
group by userid) b on a.userid =b.userid and a.createtime =b.createtime
/*
orderiduseridcreatetime
732012-09-14 13:00:01.000
522012-09-13 13:00:01.000
312012-09-13 13:00:01.000
*/
[解决办法]
;WITH cte AS (
SELECT rn=ROW_NUMBER() OVER(partition BY userid ORDER BY createtime desc,orderid desc),* FROM tb_order
)
SELECT * FROM cte WHERE rn=1;
