根据字段唯一查询

yunmoon yunmoon 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
表 RunningStatus

PuID GpsTime Longitude Speed Rese

1 1 3 1 0
1 2 4 2 0
2 3 5 3 0
2 4 6 4 0
2 4 7 5 0
3 5 7 6 0


要求:查询 PuID唯一 GpsTime最大的所有信息
如下:
1 2 4 2 0
2 4 6 4 0
3 5 7 6 0

语句:select a.* from (SELECT PuID,max(GpsTime) as GpsTime FROM RunningStatus group by PuID) b LEFT OUTER JOIN RunningStatus a on a.PuID = b.PuID and a.GpsTime = b.GpsTime

得到的是:
1 2 4 2 0
2 4 6 4 0
2 4 7 5 0
3 5 7 6 0


语句:再嵌套一层group by :
select a.* from (SELECT PuID,max(GpsTime) as GpsTime FROM RunningStatus group by PuID) b LEFT OUTER JOIN RunningStatus a on a.PuID = b.PuID and a.GpsTime = b.GpsTime and a.Longitude in (select max(Longitude) as Longitude from (select a.* from (SELECT PuID,max(GpsTime) as GpsTime FROM RunningStatus group by PuID) b LEFT OUTER JOIN RunningStatus a on a.PuID = b.PuID and a.GpsTime = b.GpsTime) c group by c.PuID) order by PuID

得到了想要的数据。

但是如果Longitude字段又不唯一的话就又要再嵌套一层group by 。。。。。

所以能不能有种简单的方法??
...全文
评论 9
收藏 已收藏
分享
返回顶部
yunmoon
MS-SQL Server 34,876 成员 254,635 内容