SQL中统计两列数据量然后相除的方法

第一步:

SELECT  field1/field2 FROM TB;


(当 field1的数值 > field2的数值时,除法得出的结果是<1的,即0.xxxxxx
   这个时候在DB2的环境下SELECT出来的值是0)


解决方法:

第二步:

SELECT  field1 /CAST(field2  AS FLOAT) FROM TB;


(先把field2转换成DOUBLE类型的,这样计算出来的就会得出小数点了,会显示出0.xxxx)

(ps:网上搜的资料,写的是double,但在SQL Server2008中一直报错,改成FLOAT就没问题了。)

第三步:

SELECT  ROUND(field1/CAST(field2  AS DOUBLE), 2) FROM TB;


(小数点显示4位小数。可以进一步四舍五入,保留两位小数点。)

第四步:

SELECT  ROUND(field1/COALESCE(CAST(field2 AS DOUBLE), 0), 2) FROM TB;


(如果数据列的值为NULL,将其设置为0,那么sql就要这么写。注意:除数不能为0


补充:
COALESCE这个函数系统的用法如下:
a. 输入参数为字符类型,且允许为空的,可以使用COALESCE(inputParameter, ” )把NULL转换成 ” ;
b. 输入类型为整型,且允许为空的,可以使用COALESCE(inputParameter, 0 ),把空转换成 ;
c. 输入参数为字符类型,且是非空非空格的,可以使用COALESCE(inputParameter, ” )把NULL转换成 ” ,然后判断函数返回值是否为 ” ;
d. 输入类型为整型,且是非空的,不需要使用COALESCE函数,直接使用 ISNULL 进行非空判断。

 

举例:

SQL中统计两列数据量然后相除的方法_第1张图片

 

你可能感兴趣的:(sql,server数据库开发,sql,server数据库基础)