2014-09-24 6 views
0

У меня есть 2 таблицы (скажем, T1 и T2). следующим образом
T1 =>
- -------------------
C1 | C2 | C3 |
-
-------------------
R1 | W1 | 0 |
R2 | W1 | 0 |
R3 | W2 | 0 |Обновление SQL с внутренним соединением и SUM

Т2 =>
- -------------
С1 | C2 |
-
-------------
R1 | 5 |
R1 | 7 |
R2 | 4 |

У меня есть T1C2. Из этого я хочу обновить T1C3 с помощью суммы T2C2 с использованием C1 в качестве соединительного ключа, то есть в этом случае для T1C2 = W1, я хочу, чтобы T1C3 обновлялся как 12, 4 для значений R1 и R2 соответственно Запрос, который я пробовал, -

UPDATE T1 
SET T1C3 = SUM(T2C2) 
FROM T1 INNER JOIN T2 ON T1C1 = T2C1 
WHERE T1C2 = W1 

Это дает ошибку «Агрегат может не отображаться в установленном списке инструкции UPDATE». Почему эта ошибка? и любая идея о том, как этого добиться, пожалуйста.

ответ

0

Вы можете использовать агрегатные функции только в select-statements. попробуйте:

UPDATE T1 
SET T1C3 = (select SUM(T2C2) 
FROM T1 INNER JOIN T2 ON T1C1 = T2C1 
WHERE T1C2 = W1) 
Смежные вопросы