Neznáte všechna svá obchodní pravidla kromě toho, které jste uvedli, zde je obecnější řešení.
Vytvořte další tabulku (nebo možná váš datový model již nějakou má) s možnými stavy v nich:
CREATE TABLE status_rank (
status VARCHAR2(100) NOT NULL,
rank NUMBER NOT NULL,
PRIMARY KEY (status_name)
);
Tato tabulka se používá k seřazení stavů v pořadí priority. Jinými slovy, pokud by měla být v případě duplikátů vybrána možnost „Požadováno zřeknutí se“ před „Zamítnuto“, použijte prioritu 1 pro zřeknutí se a 2 pro odmítnutí.
Nyní tedy může dotaz využít tuto další tabulku hodnocení:
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;
Existuje mnoho způsobů, jak skutečně provést dotaz, ale toto by vám mělo ukázat obecnou představu.