Mysql
 sql >> Datenbank >  >> RDS >> Mysql

LIMIT / OFFSET in Oracle 11G

Ursprüngliche Antwort gelöscht, nicht durchführbar

Ich denke, das sollte in einer einzigen SQL-Anweisung machbar sein, aber bisher hat die Kombination aus der Notwendigkeit einer korrelierten Unterabfrage und der Notwendigkeit einer Art Analysefunktion alles, was ich versucht habe, zum Scheitern gebracht.

Hier ist eine prozedurale Methode, von der ich denke, dass sie das tut, was Sie wollen:

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;