Я использую SQL Server 2008 R2. Я использую следующий запрос, чтобы увидеть сумму количества затрат времени для всех продуктов в пакете.Обновить запись в таблице, взяв сумму из другой таблицы в SQL Server 2008 R2
select
a.nid, a.packagename,
case
when sum(b.quantity * c.price) is null
then 0
else sum(b.quantity * c.price)
end
from
tblpackage as a
left join
tblpackage_service as b on a.nid = b.package_id
left join
tblproduct as c on c.nid = b.service_id
group by
a.nid, a.packagename
который возвращает следующий результат
nid packagename (No Column Name)
---------------------------------------
6 Test Package 4 400.00
3 Test Package 5 0.00
5 Test Package 6 1350.00
8 Test Package 7 350.00
7 Test Package 8 400.00
9 Test Package 9 400.00
1 Test Package 1 0.00
2 Test Package 2 0.00
4 Test Package 3 3900.00
Теперь я обновляю то же самое, используя
update tblpackage
set tblpackage.amount = case
when sum(b.quantity * c.price) is null
then 0
else sum(b.quantity * c.price)
end
from tblpackage AS a
left join tblpackage_service as b on a.nid = b.package_id
left join tblproduct as c on c.nid = b.service_id
и я получаю сообщение об ошибке:
An aggregate may not appear in the set list of an UPDATE statement.
Так есть ли способ сделать это, используя обновление запрос.
Пожалуйста, помогите. Заранее спасибо.
это работает, спасибо – rexroxm