首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql汇总查询的有关问题{浮点数据运算}

2012-08-22 
sql汇总查询的问题{浮点数据运算}请教问题:我有两个表,表1:tel_info包含了部门,电话号码,等字段,一个部门

sql汇总查询的问题{浮点数据运算}
请教问题:
我有两个表,
表1:tel_info包含了部门,电话号码,等字段,一个部门可以有多个电话号码
表2:tel_feiyong,包含了电话号码,时间,通话费,信息费,XX费
我想通过汇总查询两个表,得到如下数据:
部门,电话,电话费汇总,信息费汇总,XX费汇总




可是我在查询的过程中,老是出现汇总出来的数据不正确的情况,请问大家如何解决

汇总字段是FLOAT(menoy 也试了)


SELECT tel_info.外线号码, tel_info.部门, Sum(tel_feiyong.基本通话费) AS 基本通话费之总计
FROM tel_info INNER JOIN tel_feiyong ON tel_info.外线号码 = tel_feiyong.电话号码
GROUP BY tel_info.外线号码, tel_info.部门;


最后得到的基本通话费之总计是很多小数位的数据
用ROUND四舍后,数据还是不准确.
不知如何解决

[解决办法]
浮点数据是近似数据,无法做到绝对的准确.

SQL code
float 和 real用于表示浮点数字数据的近似数字数据类型。浮点数据为近似值;并非数据类型范围内的所有数据都能精确地表示。语法float [ ( n ) ]从 - 1.79E + 308 到 1.79E + 308 之间的浮点数字数据。n 为用于存储科学记数法 float 数尾数的位数,同时指示其精度和存储大小。n 必须为从 1 到 53 之间的值。n 所在范围 精度 存储大小 1-24 7 位数 4 字节 25-53 15 位数 8 字节 Microsoft® SQL Server? float[(n)] 数据类型对于从 1 到 53 之间的所有 n 值均符合 SQL-92 标准。double precision 的同义词为 float(53)。real从 ?3.40E + 38 到 3.40E + 38 之间的浮点数字数据。存储大小为 4 字节。在 SQL Server 中,real 的同义词为 float(24)。
[解决办法]
没数据没真相,按道理你的写法是正确的
[解决办法]
用decimal数据类型:
SQL code
create table tel_feiyong(电话号码 varchar(20),基本通话费 decimal(18,2),信息费 decimal(18,2),XX费 decimal(18,2))create table tel_info(部门 nvarchar(10),外线号码 varchar(20))insert into tel_info select 'AA','12345678'insert into tel_feiyong select '12345678',23.45,0.40,10.02insert into tel_feiyong select '12345678',11.02,0.50,2.46insert into tel_feiyong select '12345678',20.11,0.30,5.93goSELECT tel_info.外线号码, tel_info.部门, Sum(tel_feiyong.基本通话费) AS 基本通话费之总计FROM tel_info INNER JOIN tel_feiyong ON tel_info.外线号码 = tel_feiyong.电话号码GROUP BY tel_info.外线号码, tel_info.部门godrop table tel_feiyong,tel_info/*外线号码                 部门         基本通话费之总计-------------------- ---------- ---------------------------------------12345678             AA         54.58(1 行受影响)*/
[解决办法]
decimal(18,2)

热点排行