Sql Server 2008算术溢出错误Bigint
我一直在尝试使用Sql Server 2008算术溢出错误Bigint,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我一直在尝试使用 select sum(columnA) from tableA 但是我不断地得到错误 将表达式转换为数据类型bigint时出现算术溢出错误 ColumnA已在表中设置为bigint,即使我尝试 select sum(cast(columnA as bigint)) from tableA 我仍然会犯同样的错误。我知道列范围中的值之和应该等于111500000000000000左右。这对一个大人物来说是不是太大了 如果是这样的话,我怎样才能避免这个错误呢?如果您认为对于BIG
select sum(columnA)
from tableA
但是我不断地得到错误
将表达式转换为数据类型bigint时出现算术溢出错误
ColumnA
已在表中设置为bigint,即使我尝试
select sum(cast(columnA as bigint)) from tableA
我仍然会犯同样的错误。我知道列范围中的值之和应该等于111500000000000000左右。这对一个大人物来说是不是太大了
如果是这样的话,我怎样才能避免这个错误呢?如果您认为对于
BIGINT
来说,totalSUM
可能太大,那么您可以将它分成两个查询,如果您有主键或其他方法来分割数据的话。这将是一个伟大的测试,以找出究竟是什么总和
SELECT SUM(columnA)
FROM tableA
Where PrimaryID < 50 --Or what ever is half your data
SELECT SUM(columnA)
FROM tableA
Where PrimaryID >= 50
选择总和(A列)
从表格
其中PrimaryID<50——或者说是数据的一半
选择总和(A列)
从表格
其中PrimaryID>=50
在获得单个
SUM
后,您可以验证总数,如果它仍然不起作用,您可以尝试进行更多查询。尝试以下操作decimal(38,0)
是SQL Server可以处理的最大数字数据类型(保存的数字大于bigint
)
BIGINT
范围如下-2^63(-9223372036854775808)到2^63-1(9223372036854775807)
大小为8字节您确定这是该列总和的范围吗?该值在bigint
的限制范围内。如果您尝试转换为numeric(38,0)
数据类型会怎么样?我刚刚在SQL server上运行了一个具有相同近似语法的查询[从表y中选择cast sum(x)作为bigint]。它运行着,尽管要小得多。表中可能有一些非数字数据吗?列的数据类型是什么?列的数据类型是bigint。列中没有非数字数据我也执行此操作:cast(sum(9999999999999999999)作为bigint)-将sum放入cast中
select sum(cast(columnA as decimal(38,0))) from tableA