感谢我对上一个问题的回答,我可以建立这种查询
http://sqlfiddle.com/#!4/3e6f9/7/0
结果表显示每个暂停数据之前的工作时间。
由此,我想添加另一个列,显示“每个暂停数据后的工作时间”,结果如下所示。
STAFF | MAX(...) | START_TIME | END_TIME | MIN(...)
------+----------+------------+----------+---------
GC01 | 12:00 | 12:03 | 12:07 | 12:10
GC01 | 12:20 | 12:25 | 12:35 | 12:40
GC02 | 12:33 | 12:35 | 12:45 | (null)
答案 0 :(得分:1)
我认为这就是你要找的东西。您需要重新加入工作表:
select p.staff,
max(w.work_time) keep (dense_rank first order by w.work_time desc),
p.start_time, p.end_time,
min(w2.work_time) keep (dense_rank first order by w2.work_time)
from pause p
join work w
on p.staff = w.staff
and p.start_time >= w.work_time
left join work w2
on p.staff = w2.staff
and p.end_time <= w2.work_time
group by p.staff, p.start_time, p.end_time