您可以使用HIERARCHY查询来更新具有所需值的表。
Oracle 数据设置:
Run Code Online (Sandbox Code Playgroud)SQL> select * from your_table; START_DAT START_ END_ --------- ------- ---- 01-JAN-20 A B 02-JAN-20 B C 03-JAN-20 C D 01-JAN-20 X Y 02-JAN-20 Y Z SQL>
查询更新数据:
Run Code Online (Sandbox Code Playgroud)SQL> UPDATE YOUR_TABLE YT 2 SET YT.START_ = COALESCE( 3 ( SELECT MIN(START_) KEEP(DENSE_RANK FIRST ORDER BY START_DATE) 4 FROM YOUR_TABLE T 5 CONNECT BY PRIOR START_ = END_ 6 START WITH END_ = YT.END_ 7 ), YT.START_); 5 rows updated. SQL>
更新数据:
Run Code Online (Sandbox Code Playgroud)SQL> select * from your_table; START_DAT START_ END_ --------- ------- ---- 01-JAN-20 A B 02-JAN-20 A C 03-JAN-20 A D 01-JAN-20 X Y 02-JAN-20 X Z SQL>
干杯!!