Lorsque jexé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;
Jobtiens,
Arithmetic overflow error converting expression to data type int.
Une idée de ce qui en est la cause?
Je « suis juste les instructions de cette réponse .
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 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;
Réponse
Ce problème est causé par SUM()
function
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