When I run this command with `SUM()`
SELECT COUNT(*) AS [Records], SUM(t.Amount) AS [Total]
FROM dbo.t1 AS t
WHERE t.Id > 0
AND t.Id < 101;
I'm getting,
Arithmetic overflow error converting expression to data type int.
Any idea on what is the cause of it?
I'm just following the instructions in [this answer](https://dba.stackexchange.com/a/174093/2639).
For values larger than the `INT` max (2,147,483,647), you'll want to use [COUNT_BIG][1](*).
SELECT COUNT_BIG(*) AS [Records], SUM(t.Amount) AS [Total]
FROM dbo.t1 AS t
WHERE t.Id > 0
AND t.Id < 101;
If it's happening in the `SUM`, you need to convert `Amount` to a `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;
[1]: https://docs.microsoft.com/en-us/sql/t-sql/functions/count-big-transact-sql