マスター/ディテール テーブルがあり、マスター テーブルの集計値をディテール テーブルに対して更新したいと考えています。次のように更新できることを知っています。
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」句を省略したバージョンも試しました。特定のデータベースの制限 (アドバンテージ) にぶつかっているのか、それとも SQL の制限にぶつかっているのかわかりません。おそらく後者です。誰でも助けることができますか?