簡體   English   中英

Oracle查詢-如果返回多個記錄,則獲取最新記錄

[英]Oracle query - get latest record if multiple records are returned

我在包中使用存儲過程,該包使用db鏈接連接到DB,並定期提取數據以更新本地DB。 通過將數據拉入“登台”表,進行一些處理並更新本地表來實現。

直到我遇到一個問題,我遇到了多個/重復的記錄,這些記錄具有不同的CREATEDON時間戳記,但具有相同的ITEM_IDEVENTCODE ,效果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_IDEVENTCODE組合是獨一無二的; 事實並非如此。

現在,我需要修改此查詢,以便如果同一ITEM_IDEVENTCODE有多個記錄,則選擇最新的記錄(最新的CREATEDON )。

您可以為此使用窗口函數:

select A, B, ITEM_ID, EVENTCODE, CREATEDON from 
    (select A, B, ITEM_ID, EVENTCODE, CREATEDON, 
                   row_number() over(partition by ITEM_ID, EVENTCODE 
                        order by CREATEDON desc) rn from SOME.DBLINK@BLAH
     where STATUS=1 and PCIKEDON is null
    )
where rn = 1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM