27

SQL Server 2008 R2を使用していて、INT挿入されたデータが最大値を超えない列がありますが、実行時に最大制限を超えてタイトルに記載されているエラーをスローする関数をINT使用するクエリがあります。SUMINT

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 PokemonExpようBIGINT 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 に答える