select A.pro_id,sum(B.pro_amount * B.pro_price)/isnull(sum(B.pro_amount+d.pro_stoamount),1) ....
提示遇到被零除错误
应该如何写

解决方案 »

  1.   

    select A.pro_id,
    sum(B.pro_amount * B.pro_price)/(case when sum(B.pro_amount+d.pro_stoamount)=0 then 0.0000001 else sum(B.pro_amount+d.pro_stoamount) end) as sums
    from ...... 
      

  2.   

    sum(B.pro_amount+d.pro_stoamount)为零或为空时,都能被除
      

  3.   

    除0你想得到什么结果?
    DECLARE @I INT
    SELECT @I=0
    SELECT CASE WHEN @I=0 THEN 你要的结果 ELSE 2/@I END
      

  4.   


    -------------------
    谢谢 
    luoyoumou
    为零或为空时,都能被除应该如何写
      

  5.   

    ...还是没说清楚...
    为NULL 你要怎么处理 转化为多少》还有被除数为0本来就可以除。。
    那除数这种情况怎么处理呢?
    都没说清楚
      

  6.   

    select A.pro_id,
    sum(B.pro_amount * B.pro_price)/(case when isnull(sum(B.pro_amount+d.pro_stoamount),0)=0 then 0.0000001 else sum(B.pro_amount+d.pro_stoamount) end) as sums
    from ...... 
      

  7.   


    ----加个isnull函数,或者将=0改成:in (0,null)
      

  8.   

    我一般是这么处理的(case isnull(a,0) when 0 then 0 esle b/a end )
      

  9.   

    CASE WHEN A IS NULL OR A=0 THEN 0 ELSE A END