如何在重复数据中获取最近插入的记录

时间:2017-03-02 06:36:40

标签: sql db2

我有两张桌子,

表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

请帮我写内部查询?

3 个答案:

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