Ответ 1
UPDATE t1
SET t1.field1 = t2.field2Sum
FROM table1 t1
INNER JOIN (select field3, sum(field2) as field2Sum
from table2
group by field3) as t2
on t2.field3 = t1.field3
Я пытаюсь установить значение в одной таблице на сумму значений в другой таблице. Что-то в этом роде:
UPDATE table1
SET field1 = SUM(table2.field2)
FROM table1
INNER JOIN table2 ON table1.field3 = table2.field3
GROUP BY table1.field3
Конечно, поскольку это стоит, это не сработает - SET
не поддерживает SUM
и не поддерживает GROUP BY
.
Я должен это знать, но мой разум рисует пробел. Что я делаю неправильно?
UPDATE t1
SET t1.field1 = t2.field2Sum
FROM table1 t1
INNER JOIN (select field3, sum(field2) as field2Sum
from table2
group by field3) as t2
on t2.field3 = t1.field3
Использование:
UPDATE table1
SET field1 = (SELECT SUM(t2.field2)
FROM TABLE2 t2
WHERE t2.field3 = field2)
Или вы можете использовать сочетание JBrooks и OMG Ponies:
UPDATE table1
SET field1 = (SELECT SUM(field2)
FROM table2 AS t2
WHERE t2.field3 = t1.field3)
FROM table1 AS t1
Хорошая ситуация для использования CROSS APPLY
UPDATE t1
SET t1.field1 = t2.field2Sum
FROM table1 t1
CROSS APPLY (SELECT SUM(field2) as field2Sum
FROM table2 t2
WHERE t2.field3 = t1.field3) AS t2