web-dev-qa-db-ja.com

INTを合計するときの算術オーバーフローエラー、どうすればBIGINTとしてキャストできますか?

テーブルから列の合計を取得しようとすると、エラーArithmetic overflow error converting expression to data type intが発生します。これは、結果の数値がINTに対して大きすぎるためです。だから私は次を使用してBIGINTにキャストしようとしました

SELECT CAST(SUM(columnname) AS BIGINT) FROM tablename

これは私に同じエラーを与えます。私が間違っていることはありますか?

42
Brian

合計する前に変換してみてください。例えば。

SELECT SUM(CONVERT(bigint, columnname)) FROM tablename

または

SELECT SUM(CAST(columnname AS BIGINT)) FROM tablename
77
Robin Day