【发布时间】:2019-12-03 23:03:53
【问题描述】:
我在使用 db 链接连接到数据库并定期提取数据以更新本地数据库的包中使用存储过程。它通过将数据拉入“暂存”表中,进行一些处理并更新本地表来实现。
它工作得很好,直到我遇到一个问题,我最终得到多个/重复的记录,这些记录具有不同的 CREATEDON 时间戳但相同的 ITEM_ID 和 EVENTCODE。
这是查询的简化版本:
LVSPICKSQL:='INSERT INTO STAGING_TABLE (A, B, ITEM_ID, EVENTCODE, CREATEDON)
SELECT (A, B, ITEM_ID, EVENTCODE, CREATEDON) FROM SOME.DBLINK@BLAH WHERE STATUS=1 AND PCIKEDON IS NULL) WHERE ROWNUM <= 200;
EXECUTE IMMIDIATE LVSPICKSQL;
我认为ITEM_ID 和EVENTCODE 的组合是独一无二的;发现事实并非如此。
现在,我需要修改此查询,以便如果有多个相同ITEM_ID 和EVENTCODE 的记录,我选择最新的一条(最新的CREATEDON)。
【问题讨论】:
-
WHERE ROWNUM <= 200没有意义吗?
标签: sql oracle select oracle12c