Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wyeliminuj zduplikowane wyniki w zapytaniu wybierającym, które zawiera kolumnę CLOB

Możesz użyć funkcji analitycznej do zidentyfikowania pojedynczego orderid dla każdego ordernum - prawdopodobnie min lub max, ale inne funkcje są dostępne, to zależy od tego, czego potrzebujesz - w podzapytaniu, a następnie filtruj, aby uzyskać tylko wiersze o zidentyfikowanych identyfikatorach:

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

Widok wbudowany pobiera wszystkie kolumny i wiersze z tabeli, ale dodaje do wyniku dodatkową kolumnę z maksymalnym identyfikatorem we wszystkich wierszach o tym samym numerze zamówienia. (Możesz tam dodać dowolne inne filtry lub oczywiście).

Filtr zewnętrzny dopasowuje wtedy tylko identyfikator dla każdego numeru zamówienia, który odpowiada tej maksymalnej wartości.

Zakłada się, że orderid jest unikalny - przynajmniej dla ordernum ale przypuszczalnie na całym świecie. Powiedziałeś orderdate jest zawsze taki sam dla ordernum ale możesz dołączyć to do partycji, jeśli nie, ewentualnie modyfikując używaną funkcję analityczną.

(A następnie zbadaj, w jaki sposób i dlaczego otrzymujesz duplikaty, i spróbuj je powstrzymać; następnie usuń duplikaty ze swojego stołu - ostrożnie...)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przekazać List z java do procedury Oracle?

  2. Jak połączyć się z bazą danych Oracle za pomocą cx_Oracle z nazwą usługi i loginem?

  3. Parsowanie tnsnames.ora za pomocą regex

  4. Dzielenie ciągu na wiele wierszy w Oracle

  5. Oracle PLSQL skraca daty i godziny do 15-minutowych bloków