以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]枚举值太大,不能适应 96 位十进制  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=109782)

--  作者:huwenguang2008
--  发布时间:2017/11/19 17:45:00
--  [求助]枚举值太大,不能适应 96 位十进制
S el ec t MAX(WOR1.PlannedQty / (Case WHEN WOR1.BaseQty >= 1 Then floor(WOR1.BaseQty) Else 1 End)) As 最大毛坯 FROM OWOR INNER JOIN WOR1 ON OWOR.DocEntry = WOR1.DocEntry WHERE OWOR.DocNum = 1252

sql里面执行没有问题,在foxtable里面执行出现问题:枚举值太大,不能适应 96 位十进制。

问题出在floor(),WOR1.BaseQty 这个值8000左右以上就会出错。



[此贴子已经被作者于2017/11/19 17:59:12编辑过]

--  作者:有点甜
--  发布时间:2017/11/19 19:28:00
--  

1、这样测试有没问题?

 

Select WOR1.PlannedQty / (Case WHEN WOR1.BaseQty >= 1 Then floor(WOR1.BaseQty) Else 1 End) As 最大毛坯 FROM OWOR INNER JOIN WOR1 ON OWOR.DocEntry = WOR1.DocEntry WHERE OWOR.DocNum = 1252

 

2、这样测试有没问题?

 

select max(最大毛坯) from (Select WOR1.PlannedQty / (Case WHEN WOR1.BaseQty >= 1 Then floor(WOR1.BaseQty) Else 1 End) As 最大毛坯 FROM OWOR INNER JOIN WOR1 ON OWOR.DocEntry = WOR1.DocEntry WHERE OWOR.DocNum = 1252) as a

 

3、这样测试有没问题?

 

Select max(WOR1.PlannedQty / (Case WHEN WOR1.BaseQty >= 1 Then round(WOR1.BaseQty) Else 1 End)) As 最大毛坯 FROM OWOR INNER JOIN WOR1 ON OWOR.DocEntry = WOR1.DocEntry WHERE OWOR.DocNum = 1252


--  作者:huwenguang2008
--  发布时间:2017/11/20 10:21:00
--  
非常感谢 有点甜
测试如下:
1和2同原来问题
3、 round(WOR1.BaseQty,0)可以用
可能就是floor函数的问题。