我有个表有两上integer型字段..  zj,zjxs,(正价和正价销售)我现在要调出正价和正价销售并且得出平均值.我是这样写的.(因为里面会有zj为0的情况)
  sql.Add('select ckmc,zj,zjxs,zjjxs case zj=0 then 0 else zjxs/zj end from baobiao');
不知道为什么.这句老是出错.请大家帮我看下错在哪里.如果直接select ckmc,zj,zjxs,zjxs/zj as zjjxs 能通过.但是碰到zj=0会报错

解决方案 »

  1.   

      sql.Add('select ckmc,zj,zjxs,case zj=0 then 0 else zjxs/zj end from baobiao'); 
      

  2.   

       sql.Add('select ckmc,zj,zjxs,zjjxs case zj when 0 then 0 else zjxs/zj end from baobiao'); 應該是這樣寫,注意WHEN
      

  3.   

    sql.Add('select ckmc,zj,zjxs,case  when zj=0 then 0 else zjxs/zj end from baobiao');
      

  4.   

    注意case在sql中也是有语法规则的select ckmc,zj,zjxs,zjjxs 
    case zj when 0 then 0 
            else zjxs/zj 
    end as zjjxs 
    from baobiao
      

  5.   

    不好意思,前面多写了个zjjxs  
      

  6.   

       奇怪.为什么我写得和楼上几位都一样的.怎么还是报错?我用的是access数据库. adoquery连接...zj,zjxs均为数字长整型).
      不知道问题出在哪?我如果直接写zjxs/zj..(当两个数值都不为0)是是可以的
    .但是问题是一碰到为0的就不行了.
      

  7.   

    原来你是access啊  ,这么写
    select ckmc,zj,zjxs,iif(zj=0,0,zjxs/zj) as zjjxs from baobiao
      

  8.   

    楼主没说清楚,access怎么能用case语句?,用楼上的试试!
      

  9.   

    谢谢.原来access不支持啊.我还问了半天.真是郁闷死啦.我说我在SQL上明明是可以的呢.呵呵.谢谢啦.