2017-07-14 140 views
-2

我有一個表id_track歷史記錄,它在不同的時間戳中更新id。我想通過在sql中迭代搜索來整合到最新的id。我怎樣才能在SQL中做到這一點?SQL跟蹤最新記錄並更新

表: OLD_ID NEW_ID TIME-STAMP 101 103 1/5/2001 102 108 2/5/2001 103 105 3/5/2001 105 106 4/5/2001 110 111 4/5/2001 108 116 14/5/2001 112 117 4/6/2001 104 118 4/7/2001 111 119 4/8/2001 期望的最終表: OLD_ID LATEST_ID LAST TIME-STAMP 101 106 4/5/2001 102 116 14/5/2001 104 118 4/7/2001 110 111 4/5/2001 112 117 4/6/2001 111 119 4/8/2001

enter image description here

+0

stackoveflow不是免費的編碼服務。你必須先嚐試自己解決問題;那麼如果卡住要求特定的幫助。你試過什麼查詢?另外,您還沒有試圖解釋old_id 101如何與「new_id」106耦合。這沒有明顯的邏輯原因。在你使用顏色的圖像中 - 他們的意思是什麼?什麼? –

+0

在表old_id 101有新的值103,然後103更改爲105,105更改爲106.所以101將具有最新的ID 106.它可以通過相關的sql搜索完成。 –

+0

有一些你知道這個數據,你沒有解釋。必須有其他東西使101與106相關......你沒有解釋那是什麼。 –

回答

0

SELECT old_id, (SELECT MAX(NEW_ID) FROM TEST01 b START WITH old_id = a.old_id CONNECT BY old_id = PRIOR new_id) new_id, (SELECT time_stamp FROM test01 c WHERE NEW_ID =(SELECT MAX(NEW_ID) FROM TEST01 b WITH old_id = a.old_id CONNECT BY old_id = PRIOR NEW_ID START)) TIME_STAMP FROM TEST01一個 WHERE old_id NOT IN(SELECT NEW_ID FROM TEST01 c)中 ORDER BY old_id ASC;

其中test01是具有數據的表格。我們必須使用START WITH ..按先連接