更新总和组

UPDATE SUM GROUP BY

要将 SUM 更新到 accountDetail table 的 totalNumber 列,来自 Trans tables totalNumber 具有匹配的 accountId(列)和 assetId(列)

这是我的尝试查询

UPDATE demo.dbo.AccountDetails
SET totalNumber=(
        SELECT SUM(totalNumber) FROM demo.dbo.Trans
        WHERE AccountDetails.accountId = Trans.accountId and AccountDetails.assetId = Trans.assetId
        GROUP BY accountId 
       )
  WHERE(
        SELECT totalNumber FROM demo.dbo.Trans
        WHERE AccountDetails.accountId = Trans.accountId and AccountDetails.assetId = Trans.assetId
        GROUP BY accountId 
  )

这给我错误无法绑定多部分标识符 "AccountDetails.accountId"。

注意 ccountId 有很多 assetId 和所有不同的

账户详情 table

id  totalNUmber   assetId   accountId 
2   30.0000       1020      789 
3   412.0000      1021      768 
4   159.0000      1020      768 
9   225.0000      1021      789 

翻译 table

id  accountid   totalNumber   assetid
5   768         8.000000      1020
6   768         4.000000      1021  
7   789         6.000000      1021  
8   768         -100.000000   1021  
9   768         -89.000000    1021  
10  768         -9.000000     1021
11  769         -7.000000     1020

请检查您的 where 声明 你忘了添加

where totalNumber =

您可以使用 CTEtotalNumberaccountId, assetId 分组,然后像下面这样更新。

;with cte as(
 SELECT accountId, assetId, SUM(totalNumber) as totalNumber
 FROM demo.dbo.Trans
 GROUP BY accountId, assetId 
)

UPDATE a
set a.totalNumber = cte.totalNumber
FROM demo.dbo.AccountDetails a
INNER JOIN cte ON a.accountId = cte.accountId and a.assetId = cte.assetId