Sql 如何从重复数据中提取最近插入的记录
我有两张桌子 表1Sql 如何从重复数据中提取最近插入的记录,sql,db2,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 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,外键。“Type”值将在同一天内多次插入,但每次插入更新的GMT时都会插入当前时间戳,如本例中的“Type”电话,用于在“03/02/2017 10.00”和“03/02/2017 10.02”插入100。
但我只想在这里插入“2017年2月3日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
请帮助我编写内部查询 Oracle/DB2支持windows函数
row_number()(按
分区),因此您可以使用
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
选择B.[创建日期],A.[A-ID],A.[reg.ID],B.[更新日期]
来自表1 A
内连接表2b
在本机SQL中的A.A-ID=B.A-ID上:
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
它是mysql/oracle还是db2?我更喜欢Db2Prefer with?您有在任何数据库中运行它的选项吗?JSR批处理中db2查询的最终实现。因此,我只希望在db2中使用它。我将删除其他标记。我添加其他标记只是为了理解逻辑。但我只希望在db2中使用它。好的。检查给出的答案并在中对它们进行注释如果你有任何疑问。这是如何给出OP的解决方案的?他不只是想加入两个表。了解预期的结果,然后看看如何实现它。