SQL 选取每个分组的某一条数据

本文介绍了如何使用SQL在不同的数据库系统中(如Sqlserver和Mysql)对数据进行分组,并从中选取每组最新创建时间的记录。通过具体实例展示了row_number()窗口函数和聚合函数max()的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:有时候我们需要对多条数据按照某个字段分组,然后选取某组中的某一个记录。
例如-
  同一运单 有多条装车记录时 取最大时间的记录
sql 实现
1.Sqlserver:



SELECT
waybill_id, -- 运单号
sigin_time, -- 签到时间
unload_time, -- 卸车时间
loading_time, -- 装车时间
send_time, -- 发车时间
create_time -- 记录创建时间
FROM (SELECT waybill_id,
     sigin_time,
     unload_time,
     loading_time,
     send_time,
     create_time,row_number() OVER (PARTITION BY waybill_id
ORDER BY create_time DESC) row_no 
FROM  tms_tms_loading_details a   )  b
  WHERE row_no=1

2.Mysql:

SELECT
waybill_id, -- 运单号
sigin_time, -- 签到时间
unload_time, -- 卸车时间
loading_time, -- 装车时间
send_time, -- 发车时间
max(create_time) -- 记录创建时间
FROM  tms_tms_loading_details
group by waybill_id


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值