J'utilise SQL Server 2008 R2 et j'ai une colonne INT
où les données insérées ne dépassent jamais le maximum INT
, mais j'ai une requête qui utilise la fonction SUM
qui, une fois exécutée, dépasse le maximum INT
dans le titre.
Je veux pouvoir exécuter cette requête sans changer le type de colonne de INT
à BIGINT
.
Voici ma requête:
SELECT UserId,
SUM( PokemonExp ) AS TotalExp,
MAX( PokemonLevel ) AS MaxPokeLevel
FROM mytable
GROUP BY UserId
ORDER BY TotalExp DESC
Remarque: La colonne PokemonExp
est de type INT
.
Le type d'expression dans SUM
détermine le type de retour.
Essayez ce qui suit:
SELECT UserId,
SUM( CAST( PokemonExp AS BIGINT )) AS TotalExp,
MAX( PokemonLevel ) AS MaxPokeLevel
FROM mytable
GROUP BY UserId
ORDER BY TotalExp DESC
Il n'est pas nécessaire de changer le type de colonne en BIGINT
pour obtenir une somme appropriée.
Juste CAST
ou CONVERT
PokemonExp
à BIGINT
avant vous effectuez la SUM
comme suit:
SUM( CAST( PokemonExp AS BIGINT ))
Le type d'expression accepté dans SUM
détermine le type de retour.
Essayez ce qui suit:
SELECT UserId,
SUM( CAST( PokemonExp AS BIGINT )) AS TotalExp,
MAX( PokemonLevel ) AS MaxPokeLevel
FROM mytable
GROUP BY UserId
ORDER BY TotalExp DESC