背景:有时候我们需要对多条数据按照某个字段分组,然后选取某组中的某一个记录。
例如-
同一运单 有多条装车记录时 取最大时间的记录
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
waybill_id, -- 运单号
sigin_time, -- 签到时间
unload_time, -- 卸车时间
loading_time, -- 装车时间
send_time, -- 发车时间
max(create_time) -- 记录创建时间
FROM tms_tms_loading_details
group by waybill_id