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'

主要采取了一个自查询,得出正确结果:
在这里插入图片描述

你可能感兴趣的:(sql,数据库)