更新总和组
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 =
您可以使用 CTE
将 totalNumber
按 accountId, 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
要将 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 =
您可以使用 CTE
将 totalNumber
按 accountId, 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