关于SQL语句的统计问题(50分)

  • 主题发起人 主题发起人 闲云野鹤
  • 开始时间 开始时间

闲云野鹤

Unregistered / Unconfirmed
GUEST, unregistred user!
select sum(建筑面积) from house where 楼号<=30
我在QUERY1里加上如上一句,统计的数据均进行过四舍五入,保留两位,
当统计的记录小于100,统计的结果还是保留两位的,但统计的记录大于100
甚至全部统计的话,就会有如384092.129999999999的情况出现,请问
我该如何是统计的结果都成为保留两位的情况?
谢谢指教 贤上50分
 
在查询后执行
TNumericField(query1.FieldByName('field1')).displayformat:='0.00';
如在Query中使用静态字段的话,直接修改该字段的displayformat即可。
 
select convert(numeric(38,2),sum(建筑面积)) from house where 楼号<=30
 
select round(sum(建筑面积),2) from house where 楼号<=30
 
putianren 可行
SELECT ROUND(123.9994, 3), ROUND(123.9995, 3)
结果:
----------- -----------
123.9990 124.0000

 
round(query1.fields[0].asfloat*100)/100
 
select convert(numeric(38,2),sum(建筑面积)) from house where 楼号<=30
我对上面几位高手的做法表示赞同,但上面这句更符合要求。
 
我用的是这句:
TNumericField(query1.FieldByName('field1')).displayformat:='0.00';
 
select convert(numeric(38,2),sum(建筑面积)) from house where 楼号<=30
我试了,这句不行,提示错误,我的程序着这样写的
select count(*),sum(a)+sum(b)+sum(c)+sum(d) as h from house where k<=100
现在的问题是中间的sum(a)+sum(b)+sum(c)+sum(d) as h 最后合计的结果h必须要
保留两位,我该怎么做呢,前面的各位提到的好象都不适应或不能用,另外,
这样统计的结果,好象和我用笨办法统计的结果不一样,有的对有的不对,这样统计是不是
有什么原因会造成误差呢?
 
[:)]
精度问题,是先四舍五入再相加呢,还是先相加再四舍五入,结果会有小小的差别。
根据用户的需要来定吧。
 
就多一层阿
select count(*),round((sum(a)+sum(b)+sum(c)+sum(d)),2) as h from house where k<=100
 
以上均有道理。
我建议使用数据库的舍入函数。
 
其实事实还有更多的层,一句SQL我就写了512字节。
select count(*),round((sum(a)+sum(b)+sum(c)+sum(d)),2) as h from house where k<=100

这种写法我已经试过了,不行系统提示错误
 
用bde 麼?
op bde sql data type same
bde deploy 打開 bcd enable
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
875
DelphiTeacher的专栏
D
后退
顶部