create table t ( grp_a varchar2(10) , grp_b varchar2(10) , grp_c varchar2(10) , grp_d varchar2(10) , val number ) ; insert into t values ( 'a1' , 'b1' , 'c1', 'd1', '10' ) ; insert into t values ( 'a1' , 'b1' , 'c1', 'd1', '20' ) ; insert into t values ( 'a1' , 'b2' , 'c1', 'd1', '30' ) ; insert into t values ( 'a1' , 'b2' , 'c1', 'd1', '40' ) ; insert into t values ( 'a1' , 'b2' , 'c2', 'd1', '50' ) ; insert into t values ( 'a2' , 'b3' , 'c2', 'd2', '12' ) ; insert into t values ( 'a2' , 'b3' , 'c2', 'd2', '22' ) ; insert into t values ( 'a2' , 'b3' , 'c2', 'd2', '32' ) ; commit ; create table t2 ( grp_a varchar2(10) , grp_b varchar2(10) , val number ) ; insert into t2 values ( 'A1' , 'X1' , '10' ) ; insert into t2 values ( 'A1' , 'X2' , '40' ) ; insert into t2 values ( 'A1' , null , '20' ) ; insert into t2 values ( 'A1' , null , '30' ) ; insert into t2 values ( 'A1' , null , '50' ) ; insert into t2 values ( 'A2' , null , '60' ) ; commit ;