表结构如下: 
oid  owner  num  status 
1  0002    100  1 
1  0003    200  2 
2  0002    400  3 
2  0003    400  1 
1  0002    500  1 
1  0003    600  1 
2  0002    700  3 
希望显示的结果: 
oid  owner  Sum_num  status 
1    0002    600      完成 
1    0003    800      完成中 
2    0002    1100      初始 
2    0003    400      完成 
sum_num为相同oid与owner列的num之和; 
S_status:若全为  1 则是完成; 
若全为  3 则是初始 
其他情况 则是完成中 select oid,owner,sum(num) sum_num,
       decode(avg(status),1,'完成',3,'初始','完成中') status
from tt
group by oid,owner
order by oid,owner

解决方案 »

  1.   

    create table tt as select 1 oid,'0002' owner,100 num,1 status from dual
    union all select 1,'0003',200,2 from dual
    union all select 2,'0002',400,3 from dual
    union all select 2,'0003',400,1 from dual
    union all select 1,'0002',500,1 from dual
    union all select 1,'0003',600,1 from dual
    union all select 2,'0002',700,3 from dual ;select * from tt;OID OWNER NUM STATUS
    1 0002 100 1
    1 0003 200 2
    2 0002 400 3
    2 0003 400 1
    1 0002 500 1
    1 0003 600 1
    2 0002 700 3select oid,owner,sum(num) sum_num, 
          decode(avg(status),1,'完成',3,'初始','完成中') status 
    from tt 
    group by oid,owner 
    order by oid,ownerOID OWNER SUM_NUM STATUS
    1 0002 600 完成
    1 0003 800 完成中
    2 0002 1100 初始
    2 0003 400 完成