2016-03-29 6 views
0

У меня есть таблица с именем batch_history с данными ниже. Таблица состоит из данных для разных партий (идентификаторы партии будут варьироваться). Я хотел бы обновить current_status_start_date до rec_change_date предыдущей строки. Я хочу, чтобы это обновление обновлялось только для записей с current_status_id как 3310 и 3320. Это должно быть сделано для всех партий (в скриншоте я только что показал данные одной партии), доступных в таблице batch_history, с data_stream_id как 129.Обновить текущую строку с использованием значения предыдущей строки в Oracle

Текущие данные в batch_history таблице:

enter image description here

Необходим выход в batch_history таблице:

enter image description here

Я прошел через запросы с использованием предложения WITH WITH, но все же я не могу определить точное использование и решение этой проблемы. Пожалуйста, помогите. Заранее спасибо.

ответ

1

Вы можете сделать это следующим образом:

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) 
+0

Спасибо Саги. Он обновляет current_status_id с помощью rec_change_date следующей строки. Но мне нужно, чтобы он обновился с использованием значения предыдущей строки. –

+0

@prabuR О, смешайте его. Попробуйте сейчас :) – sagi

+0

Спасибо, Sagi, отлично работает !! –

Смежные вопросы