sql >> Database teknologi >  >> RDS >> Oracle

Hvordan opdaterer du en række i PL/SQL baseret på den næste række?

Prøv at bruge en fletteerklæring. Ikke sikker på, at det helt gør, hvad du vil, men det burde virke. Desværre er insert-sætningen nødvendig), men den bør aldrig kaldes.

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. Løkke og indsæt månedsplan af PHP

  2. Løsning til:Gem opdatering, indsæt eller slet erklæring påvirkede et uventet antal rækker (0)

  3. Oracle-opdateringsforespørgsel for at opdatere poster i sekventiel rækkefølge

  4. Hvordan opretter jeg forbindelse til en SQL Server 2008-database ved hjælp af JDBC?