Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Server 2008算术溢出错误Bigint_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

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
来说,total
SUM
可能太大,那么您可以将它分成两个查询,如果您有主键或其他方法来分割数据的话。这将是一个伟大的测试,以找出究竟是什么总和

 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