Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用聚合函数SUM更新_Sql_Ms Access_Ms Access 2010_Ms Access 2007_Aggregate Functions - Fatal编程技术网

Sql 使用聚合函数SUM更新

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

以下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 =
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