我有两张桌子,
表1
A-ID Name reg.id
100 shankar 11a
101 kumar 11b
102 Raj 11c
表2
A-ID B-ID Type create date update date
100 1 mail 03/01/17 03/01/2017 9.10
100 2 fax 03/01/17 03/01/2017 9.10
100 3 phone 03/01/17 03/01/2017 9.11
100 4 phone 03/02/17 03/02/2017 10.00
100 5 fax 03/02/17 03/02/2017 10.01
100 6 mail 03/02/17 03/02/2017 10.01
100 7 phone 03/02/17 03/02/2017 10.02
101 4 phone 03/02/17 03/02/2017 10.00
101 5 fax 03/02/17 03/02/2017 10.02
101 6 mail 03/02/17 03/02/2017 10.03
这里是A-ID,外键。 “类型”值将在同一天插入多次,但每次插入更新的gmts将插入当前时间戳,就像在此示例中的“Type”手机100插入“03/02/2017 10.00”和“ 03/02/2017 10.02“。 但是我想要在特定日期的最近插入“03/02/2017 10.02”。这同样适用于其他“类型”值传真和电子邮件..但是特定日期的最近条目应该只提取一次吗?
我想要结果,
create date A-ID reg.id Type update date
03/02/17 100 11a phone 03/02/2017 10.02
03/02/17 100 11a fax 03/02/2017 10.01
03/02/17 100 11a mail 03/02/2017 10.01
03/02/17 101 11b phone 03/02/2017 10.00
03/02/17 101 11b fax 03/02/2017 10.02
03/02/17 101 11b mail 03/02/2017 10.03
请帮我写内部查询?
答案 0 :(得分:1)
select B.[create date] , A.[A-ID] , A.[reg.id] , B.[update date]
FROM Table1 A
INNER JOIN Table2 B
ON A.A-ID = B.A-ID
答案 1 :(得分:0)
Oracle / DB2支持窗口函数select * from
(select
t.*,row_number() over (partition by A-ID,Type order by "update date" desc) rn
from Table2 t
) t2
left join Table1 t1
on t2.A-ID=T1.A-ID
where t2.rn=1
,因此您可以使用
i
答案 2 :(得分:0)
在Native SQL中:
SELECT CREATE_DATE
,A_ID
,REG_ID
,TYPE
,MAX(UPDATE_DATE)
FROM TABLE_1 A,TABLE_2 B
WHERE A.A_ID= B.A_ID
GROUP BY CREATE_DATE
,A_ID
,REG_ID
,TYPE