Sql 使用聚合函数SUM更新
以下SQL语句工作正常:Sql 使用聚合函数SUM更新,sql,ms-access,ms-access-2010,ms-access-2007,aggregate-functions,Sql,Ms Access,Ms Access 2010,Ms Access 2007,Aggregate Functions,以下SQL语句工作正常: SELECT SUM(IIF(srsFromStock, srsAmount, 0)), srvID FROM tblServices AS S INNER JOIN tblServicesSub AS SS ON S.srvID = SS.srssrvID GROUP BY srvID 我想将此选择转换为更新,但尚未成功: UPDATE tblServices AS S INNER JOIN tblServicesSub AS SS ON S.srvID = S
SELECT SUM(IIF(srsFromStock, srsAmount, 0)), srvID
FROM tblServices AS S INNER JOIN tblServicesSub AS SS ON S.srvID =
SS.srssrvID
GROUP BY srvID
我想将此选择转换为更新,但尚未成功:
UPDATE tblServices AS S INNER JOIN tblServicesSub AS SS ON S.srvID =
SS.srssrvID SET srvSumFromStock = SUM(IIF(srsFromStock, srsAmount,
0)) GROUP BY srvID
发生了什么以及如何修复它?不能使用聚合值进行更新。若在这种情况下,我将使用表变量或临时表来保存聚合结果,然后连接表并更新它们。像这样的事情:
DECLARE @tempTbl TABLE (srssrvID INT,aggregate_sum DECIMAL(18,4))
INSERT INTO @tempTbl SELECT srssrvID,SUM(IIF(srsFromStock, srsAmount, 0)) FROM tblServicesSub GROUP BY srssrvID
UPDATE tblServices INNER JOIN @tempTbl ON srssrvID=srvID
SET srvSumFromStock=aggregate_sum
无法使用聚合值进行更新。若在这种情况下,我将使用表变量或临时表来保存聚合结果,然后连接表并更新它们。像这样的事情:
DECLARE @tempTbl TABLE (srssrvID INT,aggregate_sum DECIMAL(18,4))
INSERT INTO @tempTbl SELECT srssrvID,SUM(IIF(srsFromStock, srsAmount, 0)) FROM tblServicesSub GROUP BY srssrvID
UPDATE tblServices INNER JOIN @tempTbl ON srssrvID=srvID
SET srvSumFromStock=aggregate_sum