Tidak mengetahui semua aturan bisnis Anda selain yang Anda berikan, berikut adalah solusi yang lebih umum.
Buat tabel lain (atau mungkin model data Anda sudah memilikinya) dengan kemungkinan status di dalamnya:
CREATE TABLE status_rank (
status VARCHAR2(100) NOT NULL,
rank NUMBER NOT NULL,
PRIMARY KEY (status_name)
);
Tabel ini digunakan untuk mengurutkan status berdasarkan prioritas. Dengan kata lain, jika "Pengabaian yang Diminta" harus dipilih daripada "Ditolak" dalam kasus duplikat, maka gunakan prioritas 1 untuk pengabaian dan 2 untuk penolakan.
Jadi sekarang kueri dapat menggunakan tabel peringkat tambahan ini:
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;
Ada banyak cara untuk benar-benar melakukan kueri, tetapi ini akan menunjukkan kepada Anda ide umumnya.