Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle查询-如果返回多条记录,则获取最新记录_Sql_Oracle_Select_Oracle12c - Fatal编程技术网

Sql Oracle查询-如果返回多条记录,则获取最新记录

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

我在一个包中使用一个存储过程,该包使用DB链接连接到DB,并定期提取数据以更新本地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有多条记录,我会选择最新的一条

您可以使用窗口功能:

从中选择A、B、项目ID、事件代码、CREATEDON 选择A、B、项目ID、事件代码、CREATEDON、, 按项目ID、事件代码的行数超额分配 由CREATEDON desc rn从某个位置订购。DBLINK@BLAH 其中STATUS=1,PCIKEDON为null 其中rn=1; 不知道ROWNUM在哪里