Объединение с КТР проще, но если вы на 11g вы можете UNPIVOT столбцы:
select distinct person
from (
select *
from (
-- this is your real big query
select 'D006' as dad, 'M026' as mom, 'LA019' as child from dual
union all select 'D006', 'M026', 'NP082' from dual
union all select 'D005', 'M048', 'NG073' from dual
)
unpivot (person for anyone IN (dad AS 'DAD', mom AS 'MOM', child AS 'CHILD'))
);
PERSON
------
D006
NP082
M026
LA019
M048
D005
NG073
7 rows selected
UNPIVOT операция добавляет новый столбец, указывающий, какие из исходных столбцов значение пришли из; так как вы, по-видимому, не заинтересованы в том, что его можно отбросить, но это нужно делать во внешнем запросе.
SQL Fiddle demo с внутренним запросом с дополнительным столбцом, добавленным с помощью univot, и тем же самым, завернутым в внешний запрос, чтобы избавиться от него и удалить дубликаты.
@ alex-poole-AWESOME !!! Большое спасибо ... Спасибо! –