Sql Oracle查询-如果返回多条记录,则获取最新记录
我在一个包中使用一个存储过程,该包使用DB链接连接到DB,并定期提取数据以更新本地DB。它通过将数据拉入临时表、进行一些处理和更新本地表来实现 它工作得很好,直到我遇到一个问题,我最终得到了多个/重复的记录,这些记录具有不同的CREATEDON时间戳,但具有相同的ITEM_ID和EVENTCODE 这是查询的简化版本:Sql Oracle查询-如果返回多条记录,则获取最新记录,sql,oracle,select,oracle12c,Sql,Oracle,Select,Oracle12c,我在一个包中使用一个存储过程,该包使用DB链接连接到DB,并定期提取数据以更新本地DB。它通过将数据拉入临时表、进行一些处理和更新本地表来实现 它工作得很好,直到我遇到一个问题,我最终得到了多个/重复的记录,这些记录具有不同的CREATEDON时间戳,但具有相同的ITEM_ID和EVENTCODE 这是查询的简化版本: LVSPICKSQL:='INSERT INTO STAGING_TABLE (A, B, ITEM_ID, EVENTCODE, CREATEDON) SELECT (A, B
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有多条记录,我会选择最新的一条 您可以使用窗口功能: 从中选择A、B、项目ID、事件代码、CREATEDON 选择A、B、项目ID、事件代码、CREATEDON、, 按项目ID、事件代码的行数超额分配 由CREATEDON desc rn从某个位置订购。DBLINK@BLAH 其中STATUS=1,PCIKEDON为null 其中rn=1; 不知道ROWNUM在哪里