select #temp2.*,
case when #temp2.daynumber = '0' then ' '
when #temp2.daynumber <>'0' then (cast((select count(*) from #temp2 where re = '已达标')as float) /(select count(*) from #temp2) )
end as percentage
from #temp2 order by #temp2.re asc这个daynumber 明明是0 , percentage应该为空啊,为什么还是0呢?
case when #temp2.daynumber = '0' then ' '
when #temp2.daynumber <>'0' then (cast((select count(*) from #temp2 where re = '已达标')as float) /(select count(*) from #temp2) )
end as percentage
from #temp2 order by #temp2.re asc这个daynumber 明明是0 , percentage应该为空啊,为什么还是0呢?
when #temp2.daynumber <>'0'
then (cast((select count(*) from #temp2 where re = '已达标')as float) /(select count(*) from #temp2) --这里的结果应该为float 所以这个case 表达式返回的数据类型也为float
--float 优先级最高)
end as percentage 改成下面的即可
[code=SQL]case when #temp2.daynumber = '0' then ' '
when #temp2.daynumber <>'0'
then ltrim(cast((select count(*) from #temp2 where re = '已达标')as float) /(select count(*) from #temp2) --把结果格式化为字符串类型
)
SET @a=1
SELECT CASE WHEN @a='1' THEN '' ELSE 0 END
SELECT CASE WHEN @a='1' THEN '' ELSE '0' END