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

Oracle एक शर्त के आधार पर डुप्लीकेट हटा रहा है

आप निम्न क्वेरी का उपयोग करके इसे प्राप्त कर सकते हैं:

delete from  tabela.lorik O
where O.netamt = 0 
AND EXISTS (SELECT 1 FROM tabela.lorik I
WHERE I.ID = O.ID AND I.netamt <> 0)

मुझे लगता है कि आपको केवल उन रिकॉर्ड्स को हटाना होगा जहां यह netamount = 0 . है , अगर नहीं तो नीचे कमेंट करें।

यदि आप एक गैर-शून्य प्रविष्टि को बनाए रखना चाहते हैं और अन्य सभी को हटाना चाहते हैं (सभी शून्य के मामले में, शून्य के साथ एक प्रविष्टि netamount के रूप में बनाए रखा जाएगा) तो आप निम्न क्वेरी का उपयोग कर सकते हैं:

DELETE FROM TABELA.LORIK O
WHERE
    ROWID IN (
        SELECT
            RWID
        FROM
            (
                SELECT
                    ROWID AS RWID,
                    ROW_NUMBER() OVER(
                        PARTITION BY ID
                        ORDER BY
                            CASE
                                WHEN NETAMT = 0 THEN 2
                                ELSE 1
                            END
                    ) AS RN
                FROM
                    TABELA.LORIK
            )
        WHERE
            RN > 1
    );

चीयर्स!!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL डेवलपर:सिस्टम आँकड़े एकत्र करने में असमर्थ:अपर्याप्त विशेषाधिकार

  2. JSTL का उपयोग करके किसी अन्य ड्रॉप डाउन चयन के आधार पर मानों को ड्रॉप डाउन सूची में पॉप्युलेट करें

  3. डेटाबेस इंसर्ट मैकेनिज्म

  4. सही उपयोगकर्ता नाम और पासवर्ड देकर, ORA-01017 प्राप्त करें:अमान्य उपयोगकर्ता नाम/पासवर्ड; लॉगऑन अस्वीकृत

  5. ORA_HASH फ़ंक्शन द्वारा उपयोग किया जाने वाला एल्गोरिथम क्या है?