Możesz użyć klauzuli unpivot. Myślę, że ten kod ci pomoże:
select a,b,c,'Name for ' || name_code || ' : '|| name_code as value from
(select 'A' a ,'B' b ,'C' c ,'D' d,'E' e,'F' f,'G' g,'H' h,'I' i from dual)
unpivot include nulls
(
name_for for name_code in (d as 'D', e as 'E' ,f as 'F',g as 'G',h as 'H',i as 'I')
);
Po aktualizacji pytania. Odpowiedź jest zmieniona na:
select A,B,C,'Name for ' || name_for as value, name_code from
(select 1 A,2 B,3 C,'Lennon' D,'Paul McCartney' E, 'Ringo Starr' F,
null G, 'Pete Best'H, 'Tommy Moore' I from dual )
unpivot include nulls
(
name_for for name_code in (d,e,f,g,h,i)
)