sql-server-2008-r2 - avg - sum sql ejemplos
¿Cómo prevenir el error de desbordamiento aritmético al usar SUM en la columna INT? (3)
Estoy utilizando SQL Server 2008 R2 y tengo una columna INT
donde los datos insertados nunca superan el INT
máximo, pero tengo una consulta que utiliza la función SUM
que cuando se ejecuta supera el límite INT
máximo y arroja el error mencionado en el título.
Quiero poder ejecutar esta consulta sin cambiar el tipo de columna de INT
a BIGINT
.
Aquí está mi consulta:
SELECT UserId,
SUM( PokemonExp ) AS TotalExp,
MAX( PokemonLevel ) AS MaxPokeLevel
FROM mytable
GROUP BY UserId
ORDER BY TotalExp DESC
Nota: La columna PokemonExp
es de tipo INT
.
El tipo de expresión aceptado en SUM
determina el tipo de retorno.
Intenta lo siguiente:
SELECT UserId,
SUM( CAST( PokemonExp AS BIGINT )) AS TotalExp,
MAX( PokemonLevel ) AS MaxPokeLevel
FROM mytable
GROUP BY UserId
ORDER BY TotalExp DESC
El tipo de expresión en SUM
determina el tipo de retorno.
Intenta lo siguiente:
SELECT UserId,
SUM( CAST( PokemonExp AS BIGINT )) AS TotalExp,
MAX( PokemonLevel ) AS MaxPokeLevel
FROM mytable
GROUP BY UserId
ORDER BY TotalExp DESC
No es necesario cambiar el tipo de columna a BIGINT
para obtener una suma adecuada.
Simplemente CAST
o CONVERT
PokemonExp
a BIGINT
antes de realizar la SUM
siguiente manera:
SUM( CAST( PokemonExp AS BIGINT ))