2016-03-29 8 views
0

以下のデータを持つbatch_historyという表があります。テーブルは異なるバッチのデータで構成されています(バッチIDは異なります)。 current_status_start_dateを前の行のrec_change_dateに更新したいと思います。これは、current_status_idが3310と3320のレコードに対してのみ更新されるようにしたいと思います。これは、batch_historyテーブルのbatch_historyテーブルで利用可能なすべてのバッチに対して実行する必要があります。Oracleの前の行の値を使用して現在の行を更新します

batch_historyテーブルで現在のデータ:

enter image description here

batch_historyテーブルで必要な出力:

enter image description here

「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

ありがとうサギは、完璧に動作します! –

関連する問題