我有一个名为batch_history的表,其中包含以下数据。该表包含不同批次的数据(批次ID将有所不同)。我想将current_status_start_date更新为上一行的rec_change_date。我希望这仅针对current_status_id为3310和3320的记录进行更新。这应该在batch_history表中以data_stream_id为129的所有批次(在屏幕截图中显示一个批次的数据)中完成。
batch_history表中的当前数据:
batch_history表中需要的输出:
我使用了' WITH'条款,但我仍然无法弄清楚这个问题的确切用法和解决方案。请帮忙。提前谢谢。
答案 0 :(得分:2)
你可以这样做:
UPDATE batch_history t
SET t.current_status_start_date = NVL((SELECT max(s.rec_change_date) FROM batch_history s
WHERE s.rec_change_date < t.rec_change_date
and t.batch_id = s.batch_id),
current_status_start_date )