我遇到了一個問題,我花了很多時間試圖解決這個問題,儘管我有一個解決方案,但它很笨重,涉及到pl/sql處理,我想知道別人可能會提出什麼。檢索當前和最近一次的值(Oracle)
我正在處理一個數據集,每次更改記錄時都會創建一個新行,從而保留歷史記錄。最新的版本將顯示在我們的應用程序中。考慮一個表具有以下數據:
Person ID Last_Name Address_line1 Effective_Start_Date Effective_End_Date 4913 Jones 1 First Street 03-aug-02 31-dec-12 4913 Cross 1 First Street 01-feb-02 02-aug-02 4913 Cross 86 Green Avenue 01-mar-01 31-jan-02 4913 Cross 87 Devonshire Road 01-jan-90 28-feb-02
作爲報告的一部分,我需要提取其中還有一個給定日期之間改變的細節。例如,假設我想提取當前的address_line1
和之前的address_line1
以及更改日期(添加新地址時的effective_start_date
)。需要注意的是,如果其他列數據發生更改,這也會創建一個新行。例如,在上面的示例中,地址更改後last_name
已更改。
不幸的是,查詢必須是通用的,以便它可以作爲報告的一部分運行,不必明確指定有效的開始和結束日期。
希望大家都有道理。希望你們都還在我身邊。因此,考慮到數據集上面,我希望看到我的報告結果如下:
Person ID Surname Address_line1 Prev_Address_line1 Effective Start date of New Address Line 1 4913 Jones 1 First Street 86 Green Avenue 01-feb-02
我的方法包括處理與PL/SQL和遍歷了相當數量的記錄,但我想知道,這可以在單個sql查詢中完成。
有沒有人有任何想法,這是否可以使用只有SQL?