Próbuję ustawić wartość w jednej tabeli na sumę wartości w innej tabeli. Coś w tym stylu:
UPDATE table1
SET field1 = SUM(table2.field2)
FROM table1
INNER JOIN table2 ON table1.field3 = table2.field3
GROUP BY table1.field3
Oczywiście w obecnym stanie to nie zadziała - SET
nie obsługuje SUM
i nie obsługuje GROUP BY
.
Powinienem to wiedzieć, ale w moim umyśle pojawia się pustka. Co ja robię źle?
sql
sql-server
tsql
Małgorzata
źródło
źródło
Odpowiedzi:
źródło
Posługiwać się:
źródło
Możesz też użyć kombinacji odpowiedzi JBrooks i OMG Kucy :
źródło
Dobra sytuacja do użycia CROSS APPLY
źródło
Wiem, że pytanie jest oznaczone jako SQL Server, ale zachowaj ostrożność podczas UPDATE z JOIN, jeśli używasz PostgreSQL . Odpowiedź @JBrooks nie zadziała:
Będziesz musiał go dostosować do:
Zobacz parametr
from_list
w dokumencie, aby dowiedzieć się, dlaczegoFROM
jest uważany przez PostgreSQL za łączenie własne: https://www.postgresql.org/docs/9.5/static/sql-update.html#AEN89239źródło
Możesz także użyć CTE jak poniżej.
źródło