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