select a.bureau, a.cnt,nvl(b.cnt,0)
(select bureau, sum(cnt) cnt from tbl  group by bureau) a,
(select bureau, sum(cnt) cnt from tbl where falg=1 group by bureau) b
where a.bureau = b.bureau(+)

解决方案 »

  1.   

    select bureau,cnt,sum(flag_num) over(order by bureau) from 
    (select bureau,sum(cnt) cnt,sum(decode(flag,'1',1,0)) flag_num from a group by bureau)
    order by bureau
      

  2.   

    很简单啊。
    乘上标志位啊。select bureau,sum(cnt),sum(cnt*flag) from tbl
    group by bureau
      

  3.   

    to :lianhg(lianhg) 你的基本可行,有没有更好的方法,由于数据比较大,所以很慢啊
    to :beckhambobo(beckham) 不好意思,你好象没有看清我的意思。
    to :iwantsay(吵闹) 呵呵,没想到你会把flag利用得这么灵活,我这只是简化了一下,如果是加其他一个条件呢?那该怎么办?
      

  4.   

    问题解决,开心~~~~~~~~~~~~~~~~~~~~~~~谢谢啦~~~!!!!iwantsay(吵闹) 通过你的提示我想到了解决的方法啦。谢谢啦谢谢各位,以后还请多多指教!!!