sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo seleccionar valores únicos de una tabla?

Esta consulta será devolver status_id únicos, pero solo si la combinación de esos status_id y cada uno de esos otros campos también es único. Puede seleccionar los status_id únicos, pero no puede devolver todos los valores de los otros campos si hay más de una combinación para cada status_id.

[editar]

Si desea solo el primer registro para cada estado:

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

En lugar de row_number , dense_rank y rank también se utilizan para diferentes tipos de numeración, pero en este caso realmente desea una sola fila, y número_fila será suficiente.

No estoy seguro order by es obligatorio. Si no, puedes dejarlo fuera. Si es así, puede especificar un valor ficticio o especificar un campo específico que desee utilizar como 'la primera fila'. Por ejemplo, especifique order by schedule_id para devolver el id_programación más bajo para cada id_estado.