2016-03-29 15 views
0

ile güncelleyin Aşağıdaki verilerle batch_history adlı bir tablom var. Tablo, farklı gruplar için verilerden oluşmaktadır (toplu iş değişkeni değişecektir). Current_status_start_date öğesini önceki satırın rec_change_date ile güncellemek istiyorum. Bunun yalnızca current_status_id ile 3310 ve 3320 gibi kayıtlar için güncellenmesini istiyorum. Bu işlem, tüm batch'ler için (bir ekranın verisini ekran görüntüsünde gösterdim) data_stream_id ile batch_history tablosunda mevcut olarak 129 olarak kullanılabilir.Mevcut satırın geçerli satırını Oracle

batch_history tabloda Güncel Veri:

enter image description here

batch_history tabloda Gereken çıkışı:

enter image description here

'WITH' deyimini kullanarak sorguları inceledim, ancak yine de bu sorunun tam kullanımını ve çözümünü anlayamıyorum. Lütfen yardım edin. Şimdiden teşekkürler.

cevap

1

Böyle yapabilirsiniz:

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

Teşekkür Sagi'de. Current_status_id ile sonraki satırın rec_change_date değeri güncelleniyor. Ancak, önceki satırın değeri ile güncellenmesi gerekiyor. –

+0

@prabuR Oh, karıştırdı ... şimdi deneyin :) – sagi

+0

Sağlar Sagi, mükemmel çalışıyor! –