以下是我的select 语句:
select count(*)  from 
(select a.dw as dw,a,gr  as gr,b,zt as zt,nvl((sum(sr),0)-nvl((sum(zc),0 ))  as amt from a,b where a.list=b.list)
where dw='1' and amt>0
上面的语句计算出的结果为10000
然后把select count(*) 改为select *其他条件都不变,结果出来的记录条数是8500。
经查当select count(*) 的时候,好像是amt>0这个条件没有起作用。
不知道什么原因,请高手指教!!

解决方案 »

  1.   

    nvl((sum(sr),0)-nvl((sum(zc),0 ))  as amt
    改为:
    ( nvl(sum(sr),0 )-nvl( sum( zc ),0 ) ) as amt
      

  2.   

    你这个语句是不行的,你仔细看看括号问题select count(*)  from 
    (select a.dw as dw,a,gr  as gr,b,zt as zt,nvl((sum(sr),0)-nvl((sum(zc),0 ))  as amt from a,b where a.list=b.list)
    where dw='1' and amt>0一般情况是先NVL 在SUM
    你的括号多了,
    SUM(NVL(SR,0))-SUM(NVL(ZC,0))
    也许的答案侥幸正确,但是这不是个好习惯,知道不。
      

  3.   

    发现没有,(select a.dw as dw,a,gr  as gr,b,zt as zt,nvl((sum(sr),0)-nvl((sum(zc),0 ))  as amt from a,b where 这里nvl  ((   sum  (   sr   )   ,0   )-nvl   ((   sum   (   zc  )   ,0    ))‘(’是6个  ‘)’是5个
    做程序可是要小心的
      

  4.   

    select a.dw as dw,a,gr  as gr,b,zt as zt,nvl((sum(sr),0)-nvl((sum(zc),0 ))  as amt from a,b where a.list=b.list
    这个语句执行应该有问题吧,是否少group by 语句
      

  5.   

    lzlkl(堕落小子)  对的
      

  6.   

    我看主要还是nvl((sum(sr),0)-nvl((sum(zc),0 ))  as amt
    的问题,缺少一个大括号