以下是我的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这个条件没有起作用。
不知道什么原因,请高手指教!!
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这个条件没有起作用。
不知道什么原因,请高手指教!!
改为:
( nvl(sum(sr),0 )-nvl( sum( zc ),0 ) ) as amt
(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))
也许的答案侥幸正确,但是这不是个好习惯,知道不。
做程序可是要小心的
这个语句执行应该有问题吧,是否少group by 语句
的问题,缺少一个大括号