SQL Server returnerer “ Aritmetisk overløpsfeil ved å konvertere uttrykk til datatype int. ”

Når jeg kjører denne kommandoen med SUM()

SELECT COUNT(*) AS [Records], SUM(t.Amount) AS [Total] FROM dbo.t1 AS t WHERE t.Id > 0 AND t.Id < 101; 

Jeg får,

Arithmetic overflow error converting expression to data type int. 

Noen ideer om hva som er årsaken til det?

Jeg følger bare instruksjonene i dette svaret .

Svar

For verdier som er større enn INT maks (2.147.483.647), du vil bruke 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; 

Hvis det skjer i SUM, må du konvertere Amount til 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; 

Svar

Dette problemet er forårsaket av SUM() -funksjon

du må CAST t.Amount som 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; 

Referanse

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *