Sql Server 2008算术溢出错误Bigint

时间:2014-01-21 17:34:06

标签: sql sql-server sql-server-2008

我一直在尝试使用

对行的行进行求和
select sum(columnA)
from tableA

然而我一直收到错误,

Arithmetic overflow error converting expression to data type bigint

ColumnA已经在表格中设置为bigint,即使我尝试

select sum(cast(columnA as bigint)) from tableA

我仍然得到同样的错误。我知道列范围中值的总和应该等于大约111500000000000000.这对bigint来说太大了吗?

如果是这样,我该如何解决这个错误?

2 个答案:

答案 0 :(得分:0)

如果您认为SUM的总BIGINT可能会很大,则可以将其分为2个查询,如果您有主键或其他方式来划分数据。这将是一个很好的测试,以确定实际总和是多少。

 SELECT SUM(columnA)
 FROM tableA
 Where PrimaryID < 50 --Or what ever is half your data

 SELECT SUM(columnA)
 FROM tableA
 Where PrimaryID >= 50

获得个人SUM后,您可以验证总数,如果仍然不起作用,您可以随时查看更多查询。

答案 1 :(得分:0)

尝试以下方法。 decimal(38,0)是SQL Server可以处理的最大数字数据类型(包含的数字大于bigint)。

select sum(cast(columnA as decimal(38,0))) from tableA