SQL Server renvoie “ Erreur de dépassement arithmétique lors de la conversion de lexpression en type de données int. ”

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *