2017-07-14 48 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 ..按先连接