有 id 状态(状态有ABC三个情况) 时间三个维度的sql表。 (审批表)
1、现在要算不同的状态计算时间差。比如状态为C的时间-状态为A的时间 =完成时间。
状态为B的时间-状态为A的时间 =等待时间....
2、同一个id,状态会有重复,比如有两个A,三个B。现在要算的是C状态-最后一个B状态后的第一A状态对应的时间=复审时间。
先第一个select max(时间) group by id ,然后第二个select 再用时间差函数相减
一张表多次利用,先把状态分出来,如
select max(t1.id),min(t2.日期)-max(t1.日期) as 完成时间 from TABLE t1 left join TABLE t2 on t1.id=t2.id where t1.状态="已完成" and t2.状态="待审批"
一次类推可以计算其他时间