У меня есть таблица master/detail и вы хотите обновить некоторые итоговые значения в главной таблице в таблице подробностей. Я знаю, что могу обновить их следующим образом:
update MasterTbl set TotalX = (select sum(X) from DetailTbl where DetailTbl.MasterID = MasterTbl.ID)
update MasterTbl set TotalY = (select sum(Y) from DetailTbl where DetailTbl.MasterID = MasterTbl.ID)
update MasterTbl set TotalZ = (select sum(Z) from DetailTbl where DetailTbl.MasterID = MasterTbl.ID)
Но я хотел бы сделать это в одном заявлении, примерно так:
update MasterTbl set TotalX = sum(DetailTbl.X), TotalY = sum(DetailTbl.Y), TotalZ = sum(DetailTbl.Z)
from DetailTbl
where DetailTbl.MasterID = MasterTbl.ID group by MasterID
но это не сработает. Я также пробовал версии, которые опускают предложение "group by". Я не уверен, сталкиваюсь ли я с ограничениями моей конкретной базы данных (Advantage) или пределов моего SQL. Вероятно, последнее. Может ли кто-нибудь помочь?