Oracle
 sql >> база данни >  >> RDS >> Oracle

В PL/SQL, как актуализирате ред въз основа на следващия ред?

Опитайте да използвате оператор за сливане. Не съм сигурен, че прави това, което искате, но трябва да работи. За съжаление клаузата за вмъкване е необходима), но никога не трябва да се извиква.

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. Как да експортирате резултата в различни раздели на Excel в Toad for Data Analyst?

  2. В Oracle, как да проверя типа обект, използван от йерархия на обектен тип?

  3. Внедряване на уебсайт на ASP.NET с ODP.NET

  4. Как да създадете текстов индекс за търсене „%abc%“?

  5. Разрешете само 3 реда да бъдат добавени към таблица за конкретна стойност