字段dj(decimal)的公式(convert(decimal(18,4),case when ([sl] = 0) then 0 else ([total] / [sl]) end)
显示出来的数据是小数点后四位,用的是去位法,我想实现小数点后4位四舍五入,怎么改

解决方案 »

  1.   

    round(case when ([sl] = 0) then 0 else ([total] / [sl]) end,4)
      

  2.   

    select convert(dec(9,4),0.00005)
    /*
    ---------------------------------------
    0.0001(1 行受影响)
    */
    楼主那个也能四舍五入。
      

  3.   

    ROUND
    返回一个舍入到指定长度或精度的数字表达式。ROUND ( numeric_expression, length [ , function ] ) 
      

  4.   

    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 相同的类型。
    SELECT ROUND(123.9994, 3), ROUND(123.9995, 3) 
    GO下面是结果集:----------- -----------
    123.9990    124.0000    用ROUND 应该可以的
      

  5.   

    --方法1: select convert(numeric(9,4),0.00005)       结果: 0.0001
    --方法2:  Select round(0.00005,4)                   结果: 0.00010