Az SQL Server “ aritmetikai túlcsordulási hibát eredményez a kifejezés int adattípussá konvertálásakor. ”

Amikor ezt a parancsot a következővel futtatom: SUM()

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

I get m,

Arithmetic overflow error converting expression to data type int. 

Van valami ötlete, hogy mi az oka?

Csak követem a ez a válasz .

Válasz

A INT max (2 147 483 647), a következőt akarja használni: 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; 

Ha a SUM fájlban történik, akkor a Amount fájlt .

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

Válasz

Ezt a problémát a SUM() függvény

CAST t.Amount mint 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; 

Referencia

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük