insert into a select 'id'from dual union
select 'name'from dual union
select 'age' from dual
create table b
(id varchar2(10),
name varchar2(10),
age varchar2(10));
insert into b select '100','aa','21' from dual union
select '101','bb','22' from dual union
select '102','cc','23' from dual
select sum(decode(field,'id',b.id)) as id,max(decode(field,'name',b.name)) as name,
max(decode(field,'age',b.age)) as age from a,b
where id=b.id
group by b.id
ID NAME AGE
---------- ---------- ---------
100 aa 21
101 bb 22
102 cc 23