Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak w PL/SQL zaktualizować wiersz na podstawie następnego wiersza?

Spróbuj użyć instrukcji scalania. Nie jestem pewien, czy robi to, co chcesz, ale powinno działać. Niestety klauzula insert jest konieczna), ale nigdy nie powinna być wywoływana.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zwracana wartość Oracle.DataAccess wykonuje bez zapytania (procedura przechowywana)

  2. Odzyskiwanie dużych danych typu clob za pomocą sqlplus

  3. Zapytanie SQL do pobrania OrderID, transactionID, Status na podstawie statusu transakcji, którym jest Char

  4. ORA-19011:Za mały bufor ciągu znaków

  5. system() zwraca -1, errno=10 po zalogowaniu do Oracle