sql >> Base de Datos >  >> RDS >> Mysql

LÍMITE / DESPLAZAMIENTO en Oracle 11G

Respuesta original eliminada, no viable

Siento que esto debería ser factible en una sola instrucción SQL, pero hasta ahora la combinación de la necesidad de una subconsulta correlacionada y la necesidad de algún tipo de función analítica ha hecho que todo lo que intenté falle.

Aquí hay un método de procedimiento que creo que hará lo que quieras:

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;