Search code examples
sql-server-2008-r2intsumoverflowarithmeticexception

How to prevent arithmetic overflow error when using SUM on INT column?


I am using SQL Server 2008 R2 and I have an INT column where the data inserted never surpasses the max INT, but I have a query which uses the SUM function which when executed surpasses the max INT limit and throws the error mentioned in the title.

I want to be able to execute this query without changing the column type from INT to BIGINT.

Here is my query:

SELECT    UserId,
          SUM( PokemonExp )     AS TotalExp,
          MAX( PokemonLevel )   AS MaxPokeLevel

FROM      mytable

GROUP BY  UserId
ORDER BY  TotalExp DESC

Note: The PokemonExp column is of type INT.


Solution

  • Type of expression in SUM determines return type.

    Try the following:

    SELECT    UserId,
              SUM( CAST( PokemonExp AS BIGINT ))  AS TotalExp,
              MAX( PokemonLevel )                 AS MaxPokeLevel
    
    FROM      mytable
    
    GROUP BY  UserId
    ORDER BY  TotalExp DESC