Ik denk dat het beste wat je met gewone SQL kunt doen, is om een query als deze uit te voeren om de gewenste query te genereren, en die vervolgens uit te voeren.
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';