Это явно вызывает вашу ошибку:
SUM(AUM.ManagementFee * AUM.AUM) AS Management_Fee
, потому что AUM.AUM
- это строка. Это кажется действительно плохим выбором типов данных, если вы хотите сохранить число. Однако я подозреваю, что вам действительно нужна прямая сумма:
SELECT c.ClientName,
SUM(a.ManagementFee) AS Management_Fee
FROM Clients c JOIN
AUM a
ON a.AUMid = c.AUMid
GROUP BY c.ClientName;
С другой стороны, проблема может заключаться в том, что AUM
представляет собой список чисел, разделенных запятыми. Если это так, мой первый и самый искренний совет - исправить модель данных. Если по какой-то причине вы не можете этого сделать, вы можете проанализировать строку и скрестить пальцы, чтобы убедиться, что она работает:
SELECT c.ClientName,
SUM(a.ManagementFee * TRY_CONVERT(NUMERIC(38, 6), s.value)) AS Management_Fee
FROM Clients c JOIN
AUM a
ON a.AUMid = c.AUMid CROSS APPLY
string_split(a.aum, ',') s
GROUP BY c.ClientName;