Estou tentando definir o valor em uma tabela para a soma dos valores em outra tabela. Algo nesse sentido:
UPDATE table1
SET field1 = SUM(table2.field2)
FROM table1
INNER JOIN table2 ON table1.field3 = table2.field3
GROUP BY table1.field3
Claro, do jeito que está, não vai funcionar - SET
não dá suporte SUM
e não dá suporte GROUP BY
.
Eu deveria saber disso, mas minha mente está em branco. O que estou fazendo de errado?
sql
sql-server
tsql
Margaret
fonte
fonte
Respostas:
fonte
Usar:
fonte
Ou você pode usar uma mistura de respostas JBrooks e OMG Ponies :
fonte
Uma boa situação para usar CROSS APPLY
fonte
Eu sei que a pergunta está marcada como SQL Server, mas tome cuidado com UPDATE com JOIN se você estiver usando PostgreSQL . A resposta do @JBrooks não funcionará:
Você terá que adaptá-lo para:
Veja o parâmetro
from_list
no documento para saber por queFROM
é considerado pelo PostgreSQL como uma autojunção: https://www.postgresql.org/docs/9.5/static/sql-update.html#AEN89239fonte
Você também pode usar o CTE como abaixo.
fonte