Lorsque j'exécute cette commande avec SUM()
SELECT COUNT(*) AS [Records], SUM(t.Amount) AS [Total]
FROM dbo.t1 AS t
WHERE t.Id > 0
AND t.Id < 101;
Je suis en train,
Arithmetic overflow error converting expression to data type int.
Une idée sur quelle en est la cause?
Je suis juste en train de suivre les instructions de cette réponse .
Pour les valeurs supérieures à INT
max (2 147 483 647), vous voudrez utiliser COUNT_BIG (*).
SELECT COUNT_BIG(*) AS [Records], SUM(t.Amount) AS [Total]
FROM dbo.t1 AS t
WHERE t.Id > 0
AND t.Id < 101;
Si cela se produit dans le SUM
, vous devez convertir Amount
en BIGINT
.
SELECT COUNT(*) AS [Records], SUM(CONVERT(BIGINT, t.Amount)) AS [Total]
FROM dbo.t1 AS t
WHERE t.Id > 0
AND t.Id < 101;
Ce problème est dû à la fonction SUM()
vous devez CAST t.Amount
comme BIGINT
SELECT COUNT(*) AS [Records], SUM(CAST(t.Amount AS BIGINT)) AS [Total]
FROM dbo.t1 AS t
WHERE t.Id > 0
AND t.Id < 101;
Référence