提个初级的问题,关于select的,分不多了,劳烦各位帮帮忙(30分)

冰雪

Unregistered / Unconfirmed
GUEST, unregistred user!
我在select 语句中用了a-b-c as d 和 sum 涵数都会出现很多位的小数,请问如何解决?
 
具体说说
 
TO 道长:
就是以下语句:
select a,b,c,a-b-c as d,sum(金额) as 总金额 from .....where .....

得出来的‘d’字段和‘总金额’字段有好多位的小数。请教。
 
在mssql中是这样的:
Select floor(a-b-c) as d from table1
注: Floor是取整函数,若想留一位小数点则:Floor((a-b-c)*10)/10 as b
 
大概是没办法解决,我也碰到过。
最后的解决办法是,所有的计算用DELPHI来完成,这样就可以完四舍五入的处理了。
然后在SQL语句中使用参数把计算后的结果传进去!
Good luck!
 
你的a,b,c字段是float类型吧,改为money类型就可以了,可惜有¥出现.
如果要去掉¥又很麻烦.
 
在外面处理
也就是不用SQL语句处理
比如在Delphi里面取整
 
>>select a,b,c,a-b-c as d,sum(金额) as 总金额 from .....where .....
在mssql中这样就行:
>>select a,b,c,Floor((a-b-c)*10)/10 as d,Floor(sum(金额)*10)/10 as 总金额 from .....where .....
 
是oracle中吗?
select a,b,c,lpad(a-b-c,8) as d,lpad(sum(金额),8) as 总金额 from .....where .....
保留8位有效数字。

 
何必那么费事,用函数round 一下就搞定 :)
 
TO dedema
不是,我用的是paradox数据库,有什么涵数可以解决的吗?
 
Select a,b,c,cast(a-b-c as numeric) as d,cast(sum(金额) as numeric) as 总金额
From .....
Where .....

试试
 
TO Quicksilver 老兄:
也还是不行啊
 
to Reesinx老兄:
可否按你说的方法举个例子啊,不胜感激!!!!
 
在Select执行后,加入此句

TNumericField(query1.FieldByName('D')).displayformat:='0.00';
 
to QuickSilver:
大哥万岁!
分不多,不能怎么分了,给QuickSilver吧,同时也谢谢其它的朋友!
 
顶部