ОБНОВЛЕНИЕ СУММЫ ГРУППЫ ПО - PullRequest
1 голос
/ 11 марта 2020

Обновление SUM до accountDetail Столбец таблицы totalNumber из таблиц Trans 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".

note * ccountId имеет много assetId и все разные

accountDetail стол

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

Транс стол

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

enter image description here

Ответы [ 2 ]

1 голос
/ 11 марта 2020

Вы можете использовать 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
0 голосов
/ 11 марта 2020

Пожалуйста, проверьте ваше где заявление, которое вы забыли добавить

где totalNumber =

...