SQL Server palauttaa “ Aritmeettisen ylivuotovirheen muunnettaessa lauseke int-tyypiksi. ”

Kun suoritan tämän komennon SUM()

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

Saan,

Arithmetic overflow error converting expression to data type int. 

Onko sinulla mitään käsitystä siitä, mistä se johtuu?

Seuraan vain ohjeita, jotka ovat kohdassa .

vastaus

Suuremmille arvoille kuin INT max (2 147 483 647), haluat käyttää 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; 

Jos sitä tapahtuu SUM -kohdassa, sinun on muunnettava Amount 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; 

Vastaa

Tämän ongelman aiheuttaa SUM() -toiminto

sinun on CAST t.Amount muodossa 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; 

Viite

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *