case when (a.Salecount1+a.Salecount2+a.Salecount3+a.Salecount4)<>0 
then convert(decimal(9,2),
sum(b.Salecount1+b.Salecount2+b.Salecount3+b.Salecount4)
/sum(a.Salecount1+a.Salecount2+a.Salecount3+a.Salecount4)) 
else 0 
end as Salecount
这样写效率很低吗

解决方案 »

  1.   

    --不做判断不行,不过,应该是对sum结果做判断吧? 否则是不准确的case when sum(a.Salecount1+a.Salecount2+a.Salecount3+a.Salecount4)<>0 
    then convert(decimal(9,2),
    sum(b.Salecount1+b.Salecount2+b.Salecount3+b.Salecount4)
    /sum(a.Salecount1+a.Salecount2+a.Salecount3+a.Salecount4)) 
    else 0 
    end as Salecount
      

  2.   


        把你的SQL语句贴完整。除0判断是没错,我是感觉你的语句有语法错误。
      

  3.   

    对,是我忘了加一个sum,我只是想知道有没有什么替代的方法,因为我大概要做50多个这样的操作,感觉好像很慢