Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment sélectionner des valeurs uniques dans une table ?

Cette requête va renvoient des status_id uniques, mais seulement si la combinaison de ces status_id et de chacun de ces autres champs est également unique. Vous pouvez sélectionner les status_id uniques, mais vous ne pouvez pas renvoyer toutes les valeurs des autres champs s'il existe plusieurs combinaisons pour chaque status_id.

[modifier]

Si vous souhaitez uniquement le premier enregistrement pour chaque statut :

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

Au lieu de row_number , dense_rank et rank sont également utilisés pour différents types de numérotation, mais dans ce cas, vous voulez vraiment une seule ligne, et row_number suffira.

Je ne suis pas sûr de order by est obligatoire. Sinon, vous pouvez le laisser de côté. Si c'est le cas, vous pouvez spécifier une valeur fictive ou spécifier un champ spécifique que vous souhaitez utiliser comme "première ligne". Par exemple, spécifiez order by schedule_id pour renvoyer le schedule_id le plus bas pour chaque status_id.