SELECT CAST( (CASE 1 
                         WHEN 0 
                         THEN 0 
                         ELSE 
                            CAST( CAST( CAST(CAST(1 AS DECIMAL(10,2)) *100/CAST(40 AS DECIMAL(10,2)) AS NUMERIC(10,0) ) as int) AS CHAR(3)) 
                      END)
               AS CHAR(3)) + '%' AS RateHit1/40 我要显示的是3%
40/40 我要显式的是100%谁帮我改一下,谢谢了。

解决方案 »

  1.   

    select cast(cast(round(cast(1 as float)*100/40,0) as int)as varchar) +'%'
      

  2.   

    To jacobsan(梅) ( ):结果是对的,我想知道这样转换会不会影响SQL执行的效率呢~
      

  3.   

    朋友,再想一下,我外面还有个CASE WHEN
    select CAST( (CASE 1 WHEN 0 THEN 0 ELSE CAST(CAST(ROUND(CAST(1 AS FLOAT)*100/40,0) AS INT)AS CHAR) END) AS CHAR) + '%' AS RateHit这样的结果还是
    RateHit
    '3.000000%'