Estoy tratando de establecer el valor en una tabla con la suma de los valores en otra tabla. Algo en estas líneas:
UPDATE table1
SET field1 = SUM(table2.field2)
FROM table1
INNER JOIN table2 ON table1.field3 = table2.field3
GROUP BY table1.field3
Por supuesto, tal como está, no funcionará, SET
no es compatible SUM
y no es compatible GROUP BY
.
Debería saber esto, pero mi mente se está quedando en blanco. ¿Qué estoy haciendo mal?
sql
sql-server
tsql
Margaret
fuente
fuente
Respuestas:
fuente
Utilizar:
fuente
O puede usar una combinación de respuestas de JBrooks y OMG Ponies :
fuente
Una buena situación para usar CROSS APPLY
fuente
Sé que la pregunta está etiquetada como SQL Server, pero tenga cuidado con UPDATE with JOIN si está utilizando PostgreSQL . La respuesta de @JBrooks no funcionará:
Tendrás que adaptarlo a:
Consulte el parámetro
from_list
en el documento para saber por quéFROM
PostgreSQL lo considera una autounión: https://www.postgresql.org/docs/9.5/static/sql-update.html#AEN89239fuente
También puede utilizar CTE como se muestra a continuación.
fuente