记录一个较为复杂的sql

文章讨论了一个SQL查询场景,涉及一对多关联表结构。在多级审核流程中,当申请最终审核通过并可能被管理员打回时,需根据最新的终审通过时间来筛选申请记录。查询使用了子查询来获取每个申请的最新审核时间,并结合时间范围条件进行过滤,确保只返回在给定时间段内最后审核通过的申请。
摘要由CSDN通过智能技术生成

两个关联表关系是一对多,用多个记录中的特定的某一个记录中个别字段的值作为条件,筛选主表数据
场景:
1.一个会多级审核的申请,在最终审核后,管理员可以打回(流程记录中会有管理员打回的记录),要求按最终审核通过时间筛选申请记录。(由于管理员打回的问题,可能一个记录对应多个审核状态是最终审核通过的流程记录)。要求按最后的审核记录算。
SELECT DISTINCT
t.id,
t.laborun_code,
t.laborun_name
FROM
t_compensate_put t
left join (SELECT max(a.audit_time) as audit_time,a.compensate_put_id FROM t_compensate_put_audit a WHERE a.audit_status_code =‘27’ group by a.compensate_put_id) m1 on m1.compensate_put_id=t.id
where
1=1
and t.audit_status=‘9’ and m1.audit_time >= #{tCompensatePut.finalJudgeStartTime}
and t.audit_status=‘9’ and m1.audit_time <= #{tCompensatePut.finalJudgeEndTime}

t_compensate_put_audit 表中的audit_status_code ='27’表示流程记录是终审通过
t_compensate_put 表中audit_status='9’表示申请的当前状态时终审通过

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值