create table A (field varchar2(10));insert into a select 'id'from dual union select 'name'from dual union select 'age' from dualcreate 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 dualselect 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
create table A
(field varchar2(10));insert into a select 'id'from dual union
select 'name'from dual union
select 'age' from dualcreate 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 dualselect 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
where (id||','||name||','||age) in
(select field from A);