select b.*,
(case when (b.s_time-a.s_time)*1440>2 then 2
else 0 end ) --下一条记录与上一条记录的时间差--分钟
from
(select a.*,
row_number() over(partition by servier_id order by service_id,s_time desc) roworder
from t1
) a,
(select a.*,
row_number() over(partition by servier_id order by service_id,s_time desc) roworder
from t1
) b
where a.servicer_id=b.service_id and b.roworder=a.roworder+1;
其中
t1表名
servier_id 是一个关键,比如一个员工的ID
s_time 记录时间
做两个子查询,对每一个员工的记录都按时间倒序排列
where条件把同一员工的前后两条记录关联起来。