【发布时间】:2017-03-02 06:37:32
【问题描述】:
我有一张这样的桌子
| EmpId | InTime | OutTime |
+----------+------------------+------------------+
| 101 | 01/02/2009 10:00 | 01/02/2009 20:00 |
| 101 | 01/02/2009 18:00 | 01/02/2009 20:00 |
| 102 | 01/02/2009 2:00 | 01/02/2009 2:00 |
| 103 | 01/02/2009 2:00 | 01/02/2009 5:00 |
| 104 | 01/02/2009 3:03 | 01/02/2009 5:00 |
| 104 | 01/02/2009 3:45 | 01/02/2009 7:00 |
| 105 | 01/02/2009 10:00 | 01/02/2009 22:00 |
| 106 | 01/02/2009 3:00 | 01/02/2009 4:00 |
| 106 | 01/02/2009 3:58 | 01/02/2009 4:10 |
+----------+------------------+------------------+
我想查找中间记录。
我的表有超过 10 万条记录。
例如:
- 检查 Empid - 想要相同
- 然后检查日期和时间,第一个值从 10 开始,到 20 结束。在第二个记录中,从 8 开始,到 20 结束。所以第一条记录结束时间要替换为第二条记录结束时间(在日期和时间之间)
输出如下:
| EmpId | StartTime | EndTime | EndTime1 |
+----------+------------------+------------------+------------------+
| 101 | 01/02/2009 10:00 | 01/02/2009 20:00 |01/02/2009 18:00 |
| 101 | 01/02/2009 18:00 | 01/02/2009 20:00 | |
| 102 | 01/02/2009 2:00 | 01/02/2009 2:00 | |
| 103 | 01/02/2009 2:00 | 01/02/2009 5:00 | |
| 104 | 01/02/2009 3:03 | 01/02/2009 5:00 |01/02/2009 3:45 |
| 104 | 01/02/2009 3:45 | 01/02/2009 7:00 | |
| 105 | 01/02/2009 10:00 | 01/02/2009 22:00 | |
| 106 | 01/02/2009 3:00 | 01/02/2009 4:00 | 01/02/2009 3:58 |
| 106 | 01/02/2009 3:58 | 01/02/2009 4:10 | |
+----------+------------------+------------------+------------------+
【问题讨论】: