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