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'

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值