TABLE1 包含代理进行的第一次呼叫的时间以及代理为每天GROUPED BY代理名称进行的最后一次呼叫的时间。
AGENT FIRSTCALL LASTCALL A 8/5/2013 10:59 8/5/2013 19:50 A 8/6/2013 11:06 8/6/2013 19:50 B 8/5/2013 10:33 8/5/2013 10:35 C 8/5/2013 10:04 8/5/2013 9:56 C 8/6/2013 10:02 8/6/2013 9:47 D 8/5/2013 10:37 8/5/2013 18:47 D 8/6/2013 14:58 8/6/2013 18:19 D 8/6/2013 10:01 8/6/2013 9:59 E 8/5/2013 12:29 8/5/2013 18:51 E 8/6/2013 12:05 8/6/2013 18:48 F 8/6/2013 11:15 8/6/2013 19:49 G 8/5/2013 10:04 8/5/2013 10:09 G 8/6/2013 10:39 8/6/2013 9:54
TABLE2 由代理名称以及该代理的每日登录和退出时间组成。
AGENT LOGIN LOGOUT A 2013-08-05 11:02:52 2013-08-05 20:05:45 A 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 E 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 F 2013-08-06 10:49:19 2013-08-06 20:01:37 G 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
我需要以这样的方式加入这些表格,以便每天获得代理,FIRSTCALL,LASTCALL,LOGIN,LOGOUT。在上面的示例中,我仅列出了两天的数据,但数据存在超过两年(> 700天)。
以前,我尝试通过'AGENT'连接这些表,但会产生多个记录。出路是什么?
答案 0 :(得分: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示例
答案 1 :(得分:-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')