表中有两列a,b皆为整数,a<b,想查询a/a+b的值转换为百分数并保留2位,需要考虑a,b为0的情况。
我是这样写的SELECT CAST(CAST(A/ COALESCE (NULLIF (A + B, 0), 1) * 100 AS DECIMAL(18, 1)) AS VARCHAR(10))  + '%' AS '百分数' FROM TABLE
实在太长,求简洁一点的SQL语句,

解决方案 »

  1.   

    SELECT 
    LTRIM(CONVERT(DEC(18,2),A*100.0/(A+B)))+'%' AS '百分数' 
    FROM TB 
    WHERE ISNULL(A+B,0)<>0 AND A<B是这个意思?
      

  2.   

    SELECT CASE WHEN ISNULL(A+B,0)<>0 THEN 
    LTRIM(CONVERT(DEC(18,2),A*100.0/(A+B)))+'%'  ELSE '' END AS '百分数' 
    FROM TB 你那样不算长吧
      

  3.   


    SELECT CASE WHEN ISNULL(A+B,0)!=0 THEN 
    CONVERT(VARCHAR(10),CONVERT(NUMERIC(18,2),A*100.0/(A+B))))+'%'  ELSE '' END AS '百分数' 
    FROM TB