Gebruik een op functies gebaseerde index:
create unique index only_one_yes on mytable
(case when col='YES' then 'YES' end);
Oracle indexeert alleen sleutels die niet volledig null zijn, en de CASE-expressie hier zorgt ervoor dat alle 'NO'-waarden worden gewijzigd in nulls en dus niet worden geïndexeerd.