Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como selecionar valores únicos de uma tabela?


Esta consulta vai retorne status_id's exclusivos, mas somente se a combinação desses status_id e cada um desses outros campos também for exclusiva. Você pode selecionar os status_ids exclusivos, mas não pode retornar todos os valores dos outros campos se houver mais de uma combinação para cada status_id.

[editar]

Se você quiser apenas o primeiro registro para cada status:
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

Em vez de row_number , dense_rank e rank são usados ​​também para diferentes tipos de numeração, mas neste caso você realmente quer uma única linha, e row_number será suficiente.

Não tenho certeza order by é mandatório. Se não, você pode deixá-lo de fora. Se for, você pode especificar um valor fictício ou especificar um campo específico que deseja usar como 'a primeira linha'. Por exemplo, agilize order by schedule_id para retornar o menor schedule_id para cada status_id.