select * from 
(select  sum(fee)  from  table  where  flag='R1') a,  
(select  sum(fee)  from  table  where  flag='R2') b,  
(select  sum(fee)  from  table  where  flag='R3') c,  
(select  sum(fee)  from  table  where  flag='R4') d,  
(select  sum(fee)  from  table  where  flag='R5') e,  
(select  sum(fee)  from  table  where  flag='R6') f  

解决方案 »

  1.   

    create or replace function get_sum(p_flag in varchar2) return varchar2 is
    Result varchar2(100);
     
     cursor t_cursor(v_flag varchar2) is
            select sum(fee) fee from table
            where flag=v_flag;
    v_count Number;  
    begin
    v_count:=0;
    Result:='';
       for v_sor in t_cursor(p_flag) loop
         if v_count=0 then
           Result:=v_sor.fee;
           v_count:=v_count+1;
         else
          Result:=Result||','||v_sor.fee;
         end if;
        end loop; 
       return(Result);
    end get_sum;
    /select get_sum(flag) from table group by flag;
      

  2.   

    select sum(decode(flag,'R1',fee,0)) R1,
           sum(decode(flag,'R2',fee,0)) R2,
           sum(decode(flag,'R3',fee,0)) R3,
           sum(decode(flag,'R4',fee,0)) R4,
           sum(decode(flag,'R5',fee,0)) R5,
           sum(decode(flag,'R6',fee,0)) R6
    from table
      

  3.   

    select a.sum1 R1,b.sum2 R2,c.sum3 R3,d.sum4 R4,e.sum5 R5,f.sum6 R6 from 
    (select  sum(fee) sum1 from  table  where  flag='R1') a,  
    (select  sum(fee) sum2 from  table  where  flag='R2') b,  
    (select  sum(fee) sum3 from  table  where  flag='R3') c,  
    (select  sum(fee) sum4 from  table  where  flag='R4') d,  
    (select  sum(fee) sum5 from  table  where  flag='R5') e,  
    (select  sum(fee) sum6 from  table  where  flag='R6') f;其实如果不按你要求得格式还可以:
    SELECT FLAG,SUM(FEE)
    FROM table
    GROUP BY FLAG;