本帖最后由 s63403048 于 2013-05-17 09:40:25 编辑

解决方案 »

  1.   

    已自己解决.
    谢谢大家.select *
      from (select sum(case
                         when car.trueandfalse = 0 then
                          car.trueandfalse
                       end) as realsum,
                   sum(case
                         when car.trueandfalse = 1 then
                          car.trueandfalse
                       end) as falsesum
              from bascarinfo car)
      

  2.   

    SELECT SUM(trueandfalse) TRUECOLUMN,SUM(DECODE(trueandfalse,0,1,0)) FALSECOLUMN FROM XXX;
      

  3.   

    哈哈,所以还是自己多思考会,说不定就想出来了。
    可惜你写的还是有问题,如果为假,你得到的结果还是0,sum(0)=0,应该这样写:
    select sum(case
                 when car.trueandfalse = 0 then
                  1
               end) as realsum,
           sum(case
                 when car.trueandfalse = 1 then
                  1
               end) as falsesum
      from bascarinfo car一般 的都会写成和楼主一样的,还可以这样写
    select (select count(1) from bascarinfo where trueandfalse = 0) realsum,
           (select count(1) from bascarinfo where trueandfalse = 1) falsesum
      from dual;
      

  4.   

    decode判断求和
    select sum(decode(trueandfalse,0,1,0)) realsum,
           sum(decode(trueandfalse,1,1,0)) falsesum
    from bascarinfo
      

  5.   


    感谢兽兽哥
    完整版SQLselect t.bran,
           t.realsum,
           t.falsesum,
           t.allcount,
           case
             when round(decode(t.allcount, 0, 0, t.realsum / t.allcount) * 100,
                        2) <> 0 then
              round(decode(t.allcount, 0, 0, t.realsum / t.allcount) * 100, 2) || '%'
           
             when round(decode(t.allcount, 0, 0, t.realsum / t.allcount) * 100,
                        2) = 0 then
              '0' || '%'
             else
              ''
           end as realrate
      from (select b.branchcode || b.branchname as bran,
                   sum(decode(car.trueandfalse, 0, 1, '')) as realsum,
                   sum(decode(car.trueandfalse, 1, 1, '')) as falsesum,
                   sum(car.trueandfalse) as allcount
              from bascarinfo car
             inner join sys_branch b
                on car.allotorgan = b.branchcode
             group by b.branchcode, b.branchname) t
      

  6.   

    SELECT SUM(DECODE(trueandfalse,1,1,0))  T1,SUM(DECODE(trueandfalse,0,1,0)) t2 FROM XXX;