Use um índice baseado em função:
create unique index only_one_yes on mytable
(case when col='YES' then 'YES' end);
O Oracle indexa apenas chaves que não são completamente nulas, e a expressão CASE aqui garante que todos os valores 'NO' sejam alterados para nulos e, portanto, não indexados.