У меня есть основная / подробная таблица и я хочу обновить некоторые сводные значения в основной таблице по сравнению с подробной таблицей. Я знаю, что могу обновить их так:
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. Вероятно, последний. Кто-нибудь может помочь?