Mysql
 sql >> Database >  >> RDS >> Mysql

LIMITE / OFFSET in Oracle 11G

Risposta originale eliminata, non valida

Ritengo che ciò dovrebbe essere fattibile in una singola istruzione SQL, ma finora la combinazione della necessità di una sottoquery correlata e della necessità di una sorta di funzione analitica ha fatto fallire tutto ciò che ho provato.

Ecco un metodo procedurale che penso farà quello che vuoi:

DECLARE
  CURSOR t IS
  SELECT LEAD(contractid,4) OVER (PARTITION BY assetid ORDER BY lasttradedate ASC) lead_contractid
    FROM table1
    FOR UPDATE;
BEGIN
  FOR r IN t LOOP
     UPDATE table1 SET nextcontractid = r.lead_contractid
       WHERE CURRENT OF t;
  END LOOP;
END;