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

SQL:Perlu menghapus baris duplikat dalam kueri

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana menjalankan pernyataan Oracle ini di JDBC

  2. Konversi ke datetime dari Oracle

  3. Mencoba memfaktorkan ulang kueri rekursif di Oracle CTE?

  4. Tipe data Oracle JDBC dan Oracle CHAR

  5. Peringatan Maven Fatal:protocol_version