1

表 1 包含每天GROUPED BY 座席名称的座席第一次呼叫时间和座席最后一次呼叫时间。

代理先呼叫后呼叫
2013 年 8 月 5 日 10:59 2013 年 8 月 5 日 19:50
2013 年 8 月 6 日 11:06 2013 年 8 月 6 日 19:50
B 2013 年 8 月 5 日 10:33 2013 年 8 月 5 日 10:35
C 2013 年 8 月 5 日 10:04 2013 年 8 月 5 日 9:56
C 2013 年 8 月 6 日 10:02 2013 年 8 月 6 日 9:47
D 2013 年 8 月 5 日 10:37 2013 年 8 月 5 日 18:47
D 2013 年 8 月 6 日 14:58 2013 年 8 月 6 日 18:19
D 2013 年 8 月 6 日 10:01 2013 年 8 月 6 日 9:59
2013 年 8 月 5 日 12:29 2013 年 8 月 5 日 18:51
2013 年 8 月 6 日 12:05 2013 年 8 月 6 日 18:48
女 2013 年 8 月 6 日 11:15 2013 年 8 月 6 日 19:49
G 2013 年 8 月 5 日 10:04 2013 年 8 月 5 日 10:09
G 2013 年 8 月 6 日 10:39 2013 年 8 月 6 日 9:54

表 2 包含代理名称以及该代理的每日登录和注销时间。

代理登录 注销
2013-08-05 11:02:52 2013-08-05 20:05:45
2013-08-06 11:00:30 2013-08-06 20:06:47
B 2013-08-05 08:59:07 2013-08-05 18:01:58
B 2013-08-06 09:11:43 2013-08-06 18:08:49
C 2013-08-05 08:58:21 2013-08-05 17:59:29
C 2013-08-06 08:59:13 2013-08-06 18:03:53
D 2013-08-05 10:37:55 2013-08-05 19:56:20
D 2013-08-06 10:37:04 2013-08-06 20:00:43
2013-08-06 09:20:50 2013-08-06 18:00:35
F 2013-08-05 10:58:06 2013-08-05 20:00:24
2013-08-06 10:49:19 2013-08-06 20:01:37
2013-08-06 11:00:17 2013-08-06 19:58:31
H 2013-08-05 09:00:38 2013-08-05 18:16:16
H 2013-08-06 08:56:38 2013-08-06 17:57:00

我需要以这样一种方式加入这些表,以便每天获得 AGENT、FIRSTCALL、LASTCALL、LOGIN、LOGOUT。在上面的示例中,我只列出了两天的数据,但数据存在两年以上(> 700 天)。

以前,我尝试通过“代理”连接这些表,但这会导致多条记录。出路是什么?

4

2 回答 2

2

像这样的东西会起作用。可能有一些更好的方法可以将时间戳转换为日期。

select T1.AGENT, T1.FIRSTCALL, T1.LASTCALL, T2.LOGIN, T2.LOGOUT
from Table1 T1
    inner join Table2 T2 on
        T2.AGENT = T1.AGENT and
        to_char(T1.FIRSTCALL, 'YYYYMMDD') = to_char(T2.LOGIN, 'YYYYMMDD')

请参阅sql fiddle示例

于 2013-08-08T09:53:28.240 回答
-1
select T1.AGENT, T1.FIRSTCALL, T1.LASTCALL, T2.LOGIN, T2.LOGOUT
from Table1 T1
    inner join Table2 T2 on
        T2.AGENT = T1.AGENT and
        to_char(T1.FIRSTCALL, 'YYYYMMDD') = to_char(T2.LOGIN, 'YYYYMMDD')
于 2018-01-04T10:47:04.743 回答