0

感谢我上一个问题的答案,我可以建立这种查询

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)  
4

1 回答 1

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
于 2013-05-27T02:44:55.187 回答