sql分组取时间最近的一条数据

紧跟上回,自从上次把分组人名的需求解决后,今天又发现了一个bug:本来结果应该为不通过的,却显示了通过,经过检查发现这个工序可以重复检查,因此在数据库中可能存在多条数据

以这条数据为例子 在之前的sql中,我只把最近的一条时间查出来了,却没有把那条时间对应的结果带出来

-- 原先的sql(这边只取了片段)
 select 
 	make_number,
 	process_name,
 	max(check_date) check_date,
 	final_result
from table
where check_type =首检 and make_number=SCZL20221217001
group by make_number,process_name

结果如下: 这边虽然带出了正确的时间,但是没有带出这条正确时间的result,因此我们需要获取到这条时间对应的result 经过修改:

select 
	t.make_number,
	t.process_name,
	t.check_date,
	t.final_result 
from table1 t  
JOIN (
		select 
			make_number,
			process_name,
			max(check_date) check_date
       from ms_first_inspection
       where check_type =首检
       group by make_number,process_name
       ) tmp on t.check_date = tmp.check_date and t.make_number = tmp.make_number and t.process_name = tmp.process_name
where t.make_number=SCZL20221217001

主要采取了一个自查询,得出正确结果:

经验分享 程序员 微信小程序 职场和发展