Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle SQL:डुप्लिकेट CLIENTKEY ढूँढें और एक विशिष्ट रिकॉर्ड दिखाएं

आप एक सबक्वायरी का उपयोग कर सकते हैं जो प्रत्येक पंक्ति को रैंकिंग प्रदान करती है, ताकि जहां एक डुप्लिकेट कुंजी हो (एक केबी, एक और कुछ भी) केबी पंक्ति उच्च स्थान पर हो; और फिर उस पर फ़िल्टर करें:

-- CTE for sample data
with your_table (clientkey, clientname, department, hostkey) as (
  select '0201967/6', 'PPBOP1BOP01-JO,BLOGS', 'KB', 'PPBOP1BOP01/MSC/PPBOP1BOP01/2/B1KI0' from dual
  union all
  select '0201967/6', 'PPBOP1BOP01-JO,BLOGS', 'BS', 'PPBOP1BOP01/MSC/PPBOP1BOP01/2/B1KI0' from dual
  union all
  select '0024028/2', 'PPBOP1BOP01-FOO,BAR', 'KB', 'PPBOP1BOP01/MSC/PPBOP1BOP01/2/B2KI0' from dual
  union all
  select '0024028/2', 'PPBOP1BOP01-FOO,BAR', 'BS', 'PPBOP1BOP01/MSC/PPBOP1BOP01/2/B2KI0' from dual
  union all
  select '1746947/1', 'BSM1BSM03-THING,BOB', 'BS', 'BSM1BSM03/BSHVS/BSM1BSM03/2/B1KI0' from dual
  union all
  select '1612105/1', 'WIBU1IBU03-TREE,GREEN', 'BS', 'WIBU1IBU03/SHVS/WIBU1IBU03/3/B1KI0' from dual
)
-- actual query
select clientkey, clientname, department, hostkey
from (
  select clientkey, clientname, department, hostkey,
    rank () over (partition by clientkey
      order by case when department = 'KB' then 0 else 1 end) as rnk
  from your_table
)
where rnk = 1;

CLIENTKEY CLIENTNAME            DE HOSTKEY                            
--------- --------------------- -- -----------------------------------
0024028/2 PPBOP1BOP01-FOO,BAR   KB PPBOP1BOP01/MSC/PPBOP1BOP01/2/B2KI0
0201967/6 PPBOP1BOP01-JO,BLOGS  KB PPBOP1BOP01/MSC/PPBOP1BOP01/2/B1KI0
1612105/1 WIBU1IBU03-TREE,GREEN BS WIBU1IBU03/SHVS/WIBU1IBU03/3/B1KI0 
1746947/1 BSM1BSM03-THING,BOB   BS BSM1BSM03/BSHVS/BSM1BSM03/2/B1KI0  

यह अभी भी अन्य विभागों में डुप्लीकेट की अनुमति देगा, यदि ऐसा हो सकता है, और उन सभी पंक्तियों को शामिल करेगा; यह केवल KB के लिए डुप्लीकेट को बाहर करेगा।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. आर मार्कडाउन एसक्यूएल खंड में एसक्यूएल पैरामीटर का उपयोग कैसे करें

  2. शामिल होने के साथ गिनती कर रहे हैं

  3. सबसे हाल के रिकॉर्ड को छोड़कर सभी रिकॉर्ड हटाएं?

  4. cx_Oracle के माध्यम से उपयोगकर्ता परिभाषित प्रकार से डेटा निकालें

  5. उस कथन के ट्रिगर के अंदर किसी कथन से प्रभावित पंक्तियों की संख्या कैसे प्राप्त करें