Tôi nghĩ rằng điều tốt nhất bạn có thể dễ dàng làm với SQL thuần túy là chạy một truy vấn như thế này để tạo truy vấn bạn muốn và sau đó chạy truy vấn đó.
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';