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

Hilangkan hasil duplikat dalam kueri pemilihan yang berisi kolom CLOB

Anda dapat menggunakan fungsi analitik untuk mengidentifikasi satu orderid untuk setiap ordernum - mungkin min atau maks, tetapi fungsi lain tersedia, itu tergantung pada apa yang Anda butuhkan - dalam subkueri, lalu filter untuk hanya mendapatkan baris dengan ID yang diidentifikasi:

select orderid, ordernum, orderdate, orderxml
from (
  select orderid, ordernum, orderdate, orderxml,
    max(orderid) over (partition by ordernum) as maxorderid
  from orders
)
where orderid = maxorderid;

Tampilan sebaris mendapatkan semua kolom dan baris dari tabel Anda, tetapi menambahkan kolom tambahan ke hasil yang memiliki ID maksimum di semua baris dengan nomor urut yang sama. (Anda dapat menambahkan filter lain yang Anda inginkan di sana, atau tentu saja).

Filter luar kemudian hanya cocok dengan ID untuk setiap nomor pesanan yang cocok dengan nilai maksimum tersebut.

Ini mengasumsikan bahwa orderid unik - setidaknya untuk ordernum tapi mungkin secara global. Anda mengatakan orderdate selalu sama untuk ordernum tetapi Anda dapat memasukkannya ke dalam partisi dengan jika tidak, mungkin memodifikasi fungsi analitik yang digunakan.

(Dan kemudian selidiki bagaimana dan mengapa Anda mendapatkan duplikat, dan coba hentikan; lalu hapus duplikat dari tabel Anda - hati-hati...)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle 11g CREATE VIEW menggunakan CONNECT BY dan beberapa tabel

  2. ekspresi reguler untuk baris terpisah kata-kata panjang yang berbeda

  3. Oracle:keunikan selektif indeks berbasis fungsi

  4. SQL Sub-Query - cara menemukan nilai min

  5. Oracle - menggunakan variabel bind dalam klausa LIKE dari kursor dinamis