Куча MAXs делает свою работу (по крайней мере, в соответствии с тем, что вы опубликовали до сих пор).
SQL> with test (name, sub1, sub2, sub3, sub4) as
2 (select 'a', null, null, null, 'pass' from dual union all
3 select 'a', null, null, 'pass', null from dual union all
4 select 'a', null, 'pass', null, null from dual union all
5 select 'a', 'pass', null, null, null from dual
6 )
7 select name, max(sub1) sub1, max(sub2) sub2, max(sub3) sub3, max(sub4) sub4
8 from test
9 group by name;
N SUB1 SUB2 SUB3 SUB4
- ---- ---- ---- ----
a pass pass pass pass
SQL>
Кстати, вы на самом деле хотели сказать «желательно использовать SQL »? Зачем вам использовать PL / SQL?