27

我正在使用SQL Server 2008 R2并且我有一INT列插入的数据永远不会超过 max INT,但是我有一个查询,它使用的SUM函数在执行时超过了最大INT限制并引发了标题中提到的错误。

我希望能够在不将列类型从 更改为 的情况下执行此INT查询BIGINT

这是我的查询:

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

FROM      mytable

GROUP BY  UserId
ORDER BY  TotalExp DESC

注意:PokemonExp列的类型为INT

4

3 回答 3

57

表达式的类型SUM决定了返回类型。

尝试以下操作:

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

FROM      mytable

GROUP BY  UserId
ORDER BY  TotalExp DESC
于 2011-11-27T21:47:20.840 回答
1

您不必更改列类型即可BIGINT获得正确的总和。

在您执行以下操作之前CAST之前CONVERT PokemonExpBIGINT SUM

SUM( CAST( PokemonExp AS BIGINT ))
于 2011-11-27T21:52:39.173 回答
0

接受的表达式SUM类型确定返回类型。

尝试以下操作:

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

FROM      mytable

GROUP BY  UserId
ORDER BY  TotalExp DESC
于 2015-07-22T08:43:58.120 回答