select   round(sum(cast(其它产品 as numeric(9,4)))/sum(cast(总数 as numeric(9,4))),3),sum(cast(其它产品 as numeric(9,4)))/sum(cast(总数 as numeric(9,4)))    #d  得到的结果是
.017000
.017241 我想要0.017
四舍五入后那些0怎么还带着呢

解决方案 »

  1.   

    cast(0.017000 as numeric(9,3))
      

  2.   

    ROUND
    返回数字表达式并四舍五入为指定的长度或精度。语法
    ROUND ( numeric_expression , length [ , function ] ) 参数
    numeric_expression精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。length是 numeric_expression 将要四舍五入的精度。length 必须是 tinyint、smallint 或int。当 length 为正数时,numeric_expression 四舍五入为 length 所指定的小数位数。当 length 为负数时,numeric_expression 则按 length 所指定的在小数点的左边四舍五入。function是要执行的操作类型。function 必须是 tinyint、smallint 或 int。如果省略 function 或 function 的值为 0(默认),numeric_expression 将四舍五入。当指定 0 以外的值时,将截断 numeric_expression。返回类型
    返回与 numeric_expression 相同的类型。

      

  3.   


    declare @t table (col numeric(7,6))
    insert into @t
    select 0.017000 union all
    select 0.017241select round(col,3) as col1,
    cast(col as decimal(18,3)) as col2 from @t
    /*
    col1                                    col2
    --------------------------------------- ---------------------------------------
    0.017000                                0.017
    0.017000                                0.017
    */
      

  4.   


    select cast(round(sum(cast(其它产品 as numeric(9,4)))/sum(cast(总数 as numeric(9,4))),3) as numeric(9,3)这样试试