Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Oracle menghapus duplikat berdasarkan suatu kondisi

Anda dapat mencapai ini menggunakan kueri berikut:

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)

Saya berasumsi bahwa Anda hanya perlu menghapus catatan yang netamount = 0 , Jika belum maka berikan komentar di bawah.

Jika Anda ingin mempertahankan satu entri bukan nol dan menghapus semua entri lainnya (Jika semua nol, satu entri dengan nol sebagai netamount akan dipertahankan) maka Anda dapat menggunakan kueri berikut:

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
    );

Semangat!!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kinerja Oracle JDBC dari ResultSet

  2. Bagaimana cara menjalankan pekerjaan di oracle?

  3. Bagaimana cara memasukkan lebih dari satu partisi dalam satu pernyataan pilih di Oracle

  4. bagaimana cara menggunakan regexp_like Oracle di Hibernate HQL?

  5. SQL untuk memperbarui gaji karyawan dengan gaji rata-rata departemen mereka