decode的结果能直接应用到该SQL的条件中吗?
有下面这样一个SQL,
select a……....
decode (a.flage, 1,sum(a.a1),2.sum(a.a2),3,sum(a.a3)) as aaa
from a
where a…..
group by a……
现在的问题是,我想把decode的结果也应用到条件中去,比如decode的结果不为0的部分才输出。
对于这样的要求有没有什么办法呢?
显然,直接在条件中写下:
and aaa != 0
这样的条件好象不行。
我想用having 好像having也不行,
比如 having (aaa != 0 )
除此之外还有没有什么办法呢?
------解决方案--------------------select * from(
select a……....
decode (a.flage, 1,sum(a.a1),2.sum(a.a2),3,sum(a.a3)) as aaa
from a ) t
where t.aaa != 0
group by t.a……
不过这么写的话还不如直接写
select a……....
decode (a.flage, 1,sum(a.a1),2.sum(a.a2),3,sum(a.a3)) as aaa
from a
where decode (a.flage, 1,sum(a.a1),2.sum(a.a2),3,sum(a.a3)) != 0
group by a……
效率差一倍呢。
------解决方案--------------------恩,人不多.