Tengo una gran tabla PostgreSQL a la que accedo a través de Django. Como el ORM de Django no es compatible con las funciones de ventana, necesito hornear los resultados de una función de ventana en la tabla como una columna regular. Quiero hacer algo como esto:Uso de funciones de ventana en una declaración de actualización
UPDATE table_name
SET col1 = ROW_NUMBER() OVER (PARTITION BY col2 ORDER BY col3);
Pero consigo ERROR: cannot use window function in UPDATE
¿Puede alguien sugerir un enfoque alternativo? Pasar la sintaxis de la función de ventana a través del método .raw() de Django no es adecuado, ya que devuelve un RawQuerySet, que no admite otras características de ORM como .filter(), que necesito.
Gracias.
No creo que necesite la auto-unión? ¡Bien podría estar equivocado, aunque estoy basando esto en lo que funciona en SQL Server! –
@Martin: Usted está seleccionando dos tablas, una es a través de UPDATE 'tablename' y otra está en la cláusula' FROM tablename'. si no se une explícitamente, va a producir un producto cartesiano. – Max
er, ¡No, no lo soy! –