Oracle
 sql >> база данни >  >> RDS >> Oracle

Елиминиране на дублирани резултати в заявка за избор, която съдържа CLOB колона

Можете да използвате аналитична функция, за да идентифицирате един orderid за всеки ordernum - вероятно мин. или макс., но са налични и други функции, зависи от това, от което се нуждаете - в подзаявка и след това филтрирайте, за да получите само редовете с идентифицираните идентификатори:

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

Вграденият изглед получава всички колони и редове от вашата таблица, но добавя допълнителна колона към своя резултат, която има максималния идентификатор във всички редове с един и същ номер на поръчка. (Можете да добавите каквито и да е други филтри, които желаете там или разбира се).

След това външният филтър съвпада само с идентификатора за всеки номер на поръчка, който съответства на тази максимална стойност.

Това предполага, че orderid е уникален - поне за ordernum но вероятно глобално. Казахте orderdate винаги е един и същ за ordernum но бихте могли да го включите в дяла, като ако не, евентуално модифицирате използваната аналитична функция.

(И след това проучете как и защо получавате дубликати и се опитайте да ги спрете; след това премахнете дубликатите от вашата таблица - внимателно...)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Не разбирам защо моята група от се проваля

  2. Как да експортирате резултатите от заявката на Oracle в JSON файл, когато използвате SQLcl

  3. Как да декларирам променлива и да я използвам в същия Oracle SQL скрипт?

  4. Изпращане на имейл с прикачени файлове в Oracle D2k, Oracle Forms 10g, Oracle Forms 6i

  5. Проблем с версията за достъп до данни на Oracle