Não conhecendo todas as suas regras de negócios além daquela que você deu, aqui está uma solução mais geral.
Crie outra tabela (ou talvez seu modelo de dados já tenha uma) com os possíveis status nelas:
CREATE TABLE status_rank (
status VARCHAR2(100) NOT NULL,
rank NUMBER NOT NULL,
PRIMARY KEY (status_name)
);
Esta tabela é usada para classificar os status em ordem de precedência. Em outras palavras, se "Isenção solicitada" deve ser selecionada em vez de "Rejeitada" no caso de duplicatas, use uma precedência de 1 para isenções e 2 para rejeições.
Então agora a consulta pode fazer uso desta tabela de classificação adicional:
SELECT b.docid, r.status
FROM b,
status_rank r,
(SELECT b.id, min(r.rank)
FROM b, status_rank r
WHERE b.status = r.status
GROUP BY id) s
WHERE b.docid = s.docid
AND r.rank = s.rank
AND b.status = r.status;
Existem várias maneiras de realmente fazer a consulta, mas isso deve mostrar a ideia geral.