आपके द्वारा दिए गए व्यवसाय के अलावा आपके सभी व्यावसायिक नियमों को नहीं जानते, यहां एक अधिक सामान्य समाधान है।
संभावित स्थितियों के साथ एक और तालिका बनाएं (या शायद आपके डेटा मॉडल में पहले से ही एक है):
CREATE TABLE status_rank (
status VARCHAR2(100) NOT NULL,
rank NUMBER NOT NULL,
PRIMARY KEY (status_name)
);
इस तालिका का उपयोग वरीयता क्रम में स्थितियों को रैंक करने के लिए किया जाता है। दूसरे शब्दों में, यदि डुप्लीकेट के मामले में "अस्वीकृत" पर "माफी अनुरोधित" का चयन किया जाना चाहिए, तो छूट के लिए 1 और अस्वीकार के लिए 2 की प्राथमिकता का उपयोग करें।
तो अब क्वेरी इस अतिरिक्त रैंकिंग तालिका का उपयोग कर सकती है:
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;
वास्तव में क्वेरी करने के कई तरीके हैं, लेकिन यह आपको सामान्य विचार दिखाना चाहिए।