以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  update时出错,提示溢出  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=132084)

--  作者:happyft
--  发布时间:2019/3/13 16:20:00
--  update时出错,提示溢出
 查询语句为       
SELECT  a.产品编码 ,a.序号 ,a.去库存需求 ,( SELECT    SUM(去库存需求) FROM  #qkc b WHERE a.产品编码 = b.产品编码 AND b.序号 <= a.序号
AS 去库存总需求  FROM  #qkc a

 更新语句为
UPDATE  #qkc  SET  累计需求 = ( SELECT SUM(去库存需求)  FROM   #qkc b WHERE  b.产品编码 = a.产品编码  AND b.序号 <= a.序号)
FROM    #qkc a;

查询语句执行没有问题,,更新时会出错,提示为  "类型 int 发生算术溢出错误,值 = 1000001030700.000000。"", 为什么?
是更新时写法不对吗?原来一直都这样用,,谢谢!

--  作者:有点甜
--  发布时间:2019/3/13 17:19:00
--  

你sum合计的值(1000001030700)大于int类型可以容纳的数值了。

 

方法一:你累计需求,改成双精度小数或者高精度小数或者长整型;

 

方法二:你的累计值是否统计错了?理清一下你的逻辑。


--  作者:HappyFt
--  发布时间:2019/3/13 17:52:00
--  
我的意思是查询时显示都没有超出百万的值 ,没有这么大的值,但是改为update语句后就提示了,是否那个update语句的写法不正确?我没检查出来
--  作者:有点甜
--  发布时间:2019/3/13 18:26:00
--  

 

请认真测试查看select语句,肯定是超出了范围的。