Мисля, че най-доброто, което можете лесно да направите с обикновен SQL, е да стартирате заявка като тази, за да генерирате заявката, която искате, и след това да я изпълните.
select 'select count(distinct '
|| listagg(column_name || ') as ' || column_name, ', count(distinct ') within group (order by column_id)
|| ' from ' || max(table_name) || ';' as script
from all_tab_cols
where table_name = 'MYTABLE';