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怎么还带着呢
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 */
select cast(round(sum(cast(其它产品 as numeric(9,4)))/sum(cast(总数 as numeric(9,4))),3) as numeric(9,3)这样试试
返回数字表达式并四舍五入为指定的长度或精度。语法
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 相同的类型。
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
*/
select cast(round(sum(cast(其它产品 as numeric(9,4)))/sum(cast(总数 as numeric(9,4))),3) as numeric(9,3)这样试试