select 
    AreaNo,
    ItemFZZC,
    ItemFZZC/(case when ItemNFMC=0 then 1 else ItemNFMC end) as ItemFZL,
    ItemCHZC,
    ItemCHZC/(case when ItemFZZC=0 then 1 else ItemFZZC end) AS ItemCHL,
    ItemCHZC/(case when ItemNFMC=0 then 1 else ItemNFMC end) AS ItemFZCHL,
    ItemCYCSW,
    ItemCYCSW/(case when ItemNCSYTS=0 then 1 else ItemNCSYTS end) AS ItemSWL,
    ItemCHZC-ItemCYCSW AS ItemZZS,
    (ItemCHZC-ItemCYCSW)/(case when ItemNCSYTS=0 then 1 else ItemNCSYTS end) AS ItemZZL,
    ItemCM, 
    ItemCM/(case when ItemNCSYTS=0 then 1 else ItemNCSYTS end) AS ItemCML,
    ItemZZZS,
    ItemZZZS/(case when ItemNCSYTS=0 then 1 else ItemNCSYTS end) AS ItemZSL,
    ItemZZZS+ItemCMRC AS ItemCLS,
    (ItemZZZS+ItemCMRC)/(case when ItemNCSYTS=0 then 1 else ItemNCSYTS end) AS ItemCLL 
from
    DataInfo,AreaInfo,ReportParameter 
where 
    DataInfo.ParameterId=ReportParameter.ParameterId 
    and 
    Type=0 
    and 
    AreaNo=150000 
    and 
    DataInfo.YearInfo=2004 
order by 
    DataInfo.ParameterId

解决方案 »

  1.   

    用case 语句判断select AreaNo,ItemFZZC,
    --ItemFZZC/ItemNFMC as ItemFZL,
    case when ItemNFMC=0 then 0 else ItemFZZC/ItemNFMC end as ItemFZL,
    --以上是修改的一个例子,其他的你自己改吧ItemCHZC,
    ItemCHZC/ItemFZZC AS ItemCHL,        --这里要改
    ItemCHZC/ItemNFMC AS ItemFZCHL,      --这里要改
    ItemCYCSW,
    ItemCYCSW/ItemNCSYTS AS ItemSWL,     --这里要改
    ItemCHZC-ItemCYCSW AS ItemZZS,       --这里要改
    (ItemCHZC-ItemCYCSW)/ItemNCSYTS AS ItemZZL,   --这里也要改
    ItemCM, 
    ItemCM/ItemNCSYTS AS ItemCML,       --这里
    ItemZZZS,
    ItemZZZS/ItemNCSYTS AS ItemZSL,     --这里
    ItemZZZS+ItemCMRC AS ItemCLS, 
    (ItemZZZS+ItemCMRC)/ItemNCSYTS AS ItemCLL   --这里也要改
    from DataInfo,AreaInfo,ReportParameter where DataInfo.ParameterId=ReportParameter.ParameterId and Type=0 and AreaNo=150000 and DataInfo.YearInfo=2004 order by DataInfo.ParameterId
      

  2.   

    用then后面是0的,还是那个错误,用1的在excle里输出就不对了,它好象用1做除数计算了,这怎么办啊?
      

  3.   

    我的程序是在VB里做的,要把从SQL库里的数据经过运算,导出成excle文档,我补充说明一下!
      

  4.   

    前面加上判断语句,如果除数为零,就Exit
      

  5.   

    如果exit了,是不是有0的记录就不能输出了!
      

  6.   

    分几种情况先?
    where时别把0的select出来,而是单独去做处理。
      

  7.   

    支持CSDMN(冒牌经理 V0.3) 的程序,
    应该可以解决问题了
      

  8.   

    我试了THEN后面是0就是还是有错,这个THEN后面的数代表什么啊?
      

  9.   

    将整一个除式等于 0 ,就是判断除数 = 0 then 结果 = 0 else 执行除法