sql >> Database >  >> RDS >> Oracle

Hoe werk je in PL/SQL een rij bij op basis van de volgende rij?

Probeer een merge-statement te gebruiken. Ik weet niet zeker of het helemaal doet wat je wilt, maar het zou moeten werken. Helaas is de insert-clausule noodzakelijk) maar mag nooit worden aangeroepen.

merge into t a
using (
  select 
    A, 
    B, 
    timestamp, 
    lag(A) over (order by id, timestamp) as prior_A,
    lag(timestamp) over (order by B, timestamp) as prior_timestamp
  from t) b
on  (a.B = b.B)
when matched then 
  update set a.a = case when b.timestamp-b.prior_timestamp <= 45 
    then b.prior_A else b.A end
when not matched then insert (B) values (null)


  1. Kan kolom dbo of de door de gebruiker gedefinieerde functie of geaggregeerde dbo.Splitfn niet vinden, of de naam is dubbelzinnig

  2. Rails waar clausule wanneer iets wordt opgeslagen als array

  3. Tabellen samenvoegen - SQL

  4. Controleer of er een rij met gegeven waarden bestaat