如何将varchar转换为numeric
cast(sum(casewhenp.ob_problemstatus='4'then1else0end)*100/casewhencount(*)=0then1else...
cast(sum(case when p.ob_problemstatus='4' then 1 else 0 end)*100/case
when count(*)=0 then 1 else count(*) end as char)+'%' psrate 这么写可以但 无法保留小数。
cast(sum(case when p.ob_problemstatus='4' then 1 else 0 end)*100/case
when count(*)=0 then 1 else count(*) end as decimal (18,2) )+'%' psrate 这么写报从数据类型 varchar 转换为 numeric 时出错。
convert(numeric,
(cast(sum(case when p.ob_problemstatus='4' then 1 else 0 end)*100/case
when count(*)=0 then 1 else count(*) end as char ))+'%' psrate 这么写报从数据类型 varchar 转换为 numeric 时出错
我的是sql2005数据库 现在我想保留2位小数 求解 展开
when count(*)=0 then 1 else count(*) end as char)+'%' psrate 这么写可以但 无法保留小数。
cast(sum(case when p.ob_problemstatus='4' then 1 else 0 end)*100/case
when count(*)=0 then 1 else count(*) end as decimal (18,2) )+'%' psrate 这么写报从数据类型 varchar 转换为 numeric 时出错。
convert(numeric,
(cast(sum(case when p.ob_problemstatus='4' then 1 else 0 end)*100/case
when count(*)=0 then 1 else count(*) end as char ))+'%' psrate 这么写报从数据类型 varchar 转换为 numeric 时出错
我的是sql2005数据库 现在我想保留2位小数 求解 展开
1个回答
展开全部
再套一个类型转换就是了。另外转成char会固定占位,格式难看
给你改成varchar了。
cast(cast(sum(case when p.ob_problemstatus='4' then 1 else 0 end)*100/case
when count(*)=0 then 1 else count(*) end as decimal (18,2) ) as varchar)+'%' psrate
给你改成varchar了。
cast(cast(sum(case when p.ob_problemstatus='4' then 1 else 0 end)*100/case
when count(*)=0 then 1 else count(*) end as decimal (18,2) ) as varchar)+'%' psrate
更多追问追答
追问
实在感谢 试了一下啊确实可以 貌似没有进行四舍五入 如果想四舍五入的话 round函数 应该加在什么位置啊? 试了半天都没成功。
追答
cast(round(sum(case when p.ob_problemstatus='4' then 1 else 0 end)*100/case
when count(*)=0 then 1 else count(*) end,2) as varchar)+'%' psrate
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询