取每一个用户 最后一天的数据。表中 :用户ID(UserId),更新日期(UpdateDate),更新动作(Action)
表中数据:用户的最后更新日期 是不一定相同。这三列数据都需要查出来。
一直 没有想通怎么写。求高手指点!
select * from 表 left join (select UserId,max(UpdateDate) as UpdateDate from 表 group by userid) a on 表.userid=a.userid and 表.updatedate=a.updatedate
漂亮 离我想要的答案 甚是接近。稍微修改下就可以用了。
select * from 表 right join (select UserId,convert(VARCHAR(10),max(UpdateDate),120) as UpdateDate from 表 group by userid) a on 表.userid=a.userid and convert(VARCHAR(10),max(表.UpdateDate),120)=a.updatedate
我有一个有方法
感觉有点笨你可以看一下
我用我自己表试了一下没有问题
declare @id int --建一个临时表 if object_id('Tempdb..#temp') is not null begin drop table #temp end else begin create table #temp ( [用户ID] int , [更新日期] varchar(100), [更新动作] varchar(200) ) end declare cursor1 cursor for --用游标 select distinct UserId from [你的表] open cursor1 fetch next from cursor1 into @id while @@fetch_status=0 begin insert into #temp select top 1 UserId,UpdateDate,Action from [你的表] where UserId = @id order by UpdateDate desc fetch next from cursor1 into @id end close cursor1 deallocate cursor1 select * from #temp drop table #temp
方法可以实现。现在就是不知道 有没有更好点的方法。
@紫炁星:
如果有更好的说一声,我也学习一下
有一个更笨的方法,先把更新日期按照降序排列,使用select语句选出top 1就行了!
查询的是用户最后一天 (一组数据)的数据 并不是第一条数据。
@紫炁星: 哈哈~谢谢提醒哦!我看题太粗心了~
max不就可以了。