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

Как да изберете уникални стойности от таблица?

Тази заявка ще връща уникални status_id, но само ако комбинацията от тези status_id и всяко от тези други полета също е уникална. Можете да изберете уникалните status_id, но не можете да върнете всички стойности на другите полета, ако има повече от една комбинация за всеки status_id.

[редактиране]

Ако искате само първия запис за всеки статус:

select 
  status_id, schedule_id, cassay_id, time_of_day, days, notify_to_addresses, active 
from
  (select 
    row_number() over (partition by status_id order by 1) as number, 
    status_id, schedule_id, cassay_id, time_of_day, days, notify_to_addresses, active 
  FROM ordertest)
where
  number = 1

Вместо row_number , dense_rank и rank се използват и за различни видове номериране, но в този случай наистина искате един ред и row_number ще бъде достатъчен.

Не съм сигурен order by е задължително. Ако не, можете да го оставите. Ако е така, можете да посочите фиктивна стойност или да посочите конкретно поле, което искате да използвате като „първи ред“. Например, укажете order by schedule_id за да върне най-ниския schedule_id за всеки status_id.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Четене на clob променлива ред по ред

  2. Прекъсване на PL/SQL програма

  3. Как да инсталирате процедурна опция в Oracle 11gr2

  4. Зареждане на данни в огромна разделена таблица

  5. Как да оптимизирам заявка с 10+ присъединявания?