如何从两个不同的表中找到两列的MIN和MAX?

时间:2013-08-08 09:44:44

标签: sql oracle join max min

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'连接这些表,但会产生多个记录。出路是什么?

2 个答案:

答案 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')