SQL Server - выберите данные нескольких строк из одной таблицы и обновите данные нескольких строк в другой таблице с помощью первых выбранных данных - PullRequest
2 голосов
/ 28 ноября 2011

Я собираюсь объяснить это как можно проще. Теперь у меня есть table_1, который имеет price и itemId. У меня также есть другая таблица table_2, которая имеет totalprice,itemId.

Что я хочу сделать, так это сложить все price из table_1, сгруппированные по itemId, и обновить эту сумму в table_2 с помощью ключа itemId в качестве общего столбца.

Цена за itemId, суммированная с table_1, должна обновить столбец totalprice в table_2.

Возможно ли это? Спасибо.

SQL Server 2008 R2

1 Ответ

3 голосов
/ 28 ноября 2011

Да, это возможно.Вы можете сделать так:

update T2
set totalprice = T1.totalprice
from Table_2 as T2
  inner join (select sum(price) as totalprice,
                     itemid
              from Table_1
              group by itemid) as T1
    on T2.itemid = T1.itemid

http://data.stackexchange.com/stackoverflow/q/119388/

Если у вас еще нет всех itemid в table_2, вы можете использовать merge для обновления существующегострок и добавьте новую строку, если она отсутствует.

merge Table_2 as T2
using (select sum(price) as totalprice,
              itemid
       from Table_1
       group by itemid) as T1
on T1.itemid = T2.itemid
when matched then 
  update set totalprice = T1.totalprice
when not matched then 
  insert (totalprice, itemid) 
  values(T1.totalprice, T1.itemid);

http://data.stackexchange.com/stackoverflow/q/119389/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...