我正在使用 SQL Server 2008 R2 ,我有一个INT
列,其中插入的数据永远不会超过最大INT
,但我有一个查询使用{ {1}}函数在执行时超过最大SUM
限制并抛出标题中提到的错误。
我希望能够在不将列类型从INT
更改为INT
的情况下执行此查询。
这是我的问题:
BIGINT
注意: SELECT UserId,
SUM( PokemonExp ) AS TotalExp,
MAX( PokemonLevel ) AS MaxPokeLevel
FROM mytable
GROUP BY UserId
ORDER BY TotalExp DESC
列的类型为PokemonExp
。
答案 0 :(得分:56)
SUM
中的表达类型决定了返回类型。
尝试以下方法:
SELECT UserId,
SUM( CAST( PokemonExp AS BIGINT )) AS TotalExp,
MAX( PokemonLevel ) AS MaxPokeLevel
FROM mytable
GROUP BY UserId
ORDER BY TotalExp DESC
答案 1 :(得分:1)
您无需将列类型更改为BIGINT
即可获得正确的总和。
CAST
或CONVERT
PokemonExp
到BIGINT
之前执行SUM
,如下所示:
SUM( CAST( PokemonExp AS BIGINT ))
答案 2 :(得分:0)
SUM
中接受的表达式类型决定了返回类型。
尝试以下方法:
SELECT UserId,
SUM( CAST( PokemonExp AS BIGINT )) AS TotalExp,
MAX( PokemonLevel ) AS MaxPokeLevel
FROM mytable
GROUP BY UserId
ORDER BY TotalExp DESC