Sin conocer todas las reglas de su negocio además de la que proporcionó, aquí hay una solución más general.
Cree otra tabla (o quizás su modelo de datos ya tenga una) con los posibles estados en ellas:
CREATE TABLE status_rank (
status VARCHAR2(100) NOT NULL,
rank NUMBER NOT NULL,
PRIMARY KEY (status_name)
);
Esta tabla se utiliza para clasificar los estados en orden de prioridad. En otras palabras, si se debe seleccionar "Exención solicitada" en lugar de "Rechazado" en el caso de duplicados, utilice una precedencia de 1 para exenciones y 2 para rechazos.
Ahora la consulta puede hacer uso de esta tabla de clasificación 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;
Hay numerosas formas de hacer la consulta, pero esto debería mostrarle la idea general.