sql >> Databáze >  >> RDS >> Oracle

Jak v PL/SQL aktualizujete řádek na základě dalšího řádku?

Zkuste použít příkaz sloučení. Nejste si jisti, že to dělá to, co chcete, ale mělo by to fungovat. Bohužel je nutná klauzule insert), ale neměla by být nikdy volána.

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. Spouštění úloh údržby databáze SQL pomocí SQLCMD

  2. Připojení C# Mysql musí být platné a otevřené

  3. Jak mohu optimalizovat dotazy MySQL pomocí konstant?

  4. Jak rozdělit data z jednoho sloupce do tří sloupců v jiné tabulce? SQL