现在这个表看起来正常,那么有一个疑问,如果出现多次出入那怎么计算?比如有一个车牌,有两次入,两次出,这是有可能的,那么怎么计算?算累计,某一次,还是最近一次?
如果只有一次出入,也就是说出或入,或者二者都只有一次,那就比较容易了,只要找到二者都有,或者有入无出的就行。我假设时间为date字段,如果不是,请自行转换格式。
select b.车辆号码,nvl(a.时间,sysdate)-b.时间 时间差 from (select 车辆号码,时间 from table where 出入='出') a right join (select 车辆号码,时间 from table where 出入='入') b on a.车辆号码=b.车辆号码
这样就求出了时间差,我没有用ceil等函数处理日期差,本来想处理的,后来觉得不处理也可以,没什么实际影响。
求出时间差就再查一遍就可以了,不过个人觉得,似乎把nvl(a.时间,sysdate)-b.时间直接放在where条件中似乎也可以,你可以试试,这样就不用再套一层了,我这里可没有环境测试。