Oracle
 sql >> Database >  >> RDS >> Oracle

Come selezionare valori univoci da una tabella?

Questa query sarà restituire status_id univoci, ma solo se anche la combinazione di tali status_id e ciascuno di quegli altri campi è univoca. Puoi selezionare gli status_id univoci, ma non puoi restituire tutti i valori degli altri campi se c'è più di una combinazione per ogni status_id.

[modifica]

Se vuoi solo il primo record per ogni stato:

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

Invece di row_number , dense_rank e rank sono usati anche per diversi tipi di numerazione, ma in questo caso vuoi davvero una singola riga e row_number sarà sufficiente.

Non sono sicuro order by è obbligatorio. In caso contrario, puoi lasciarlo fuori. In tal caso, puoi specificare un valore fittizio o specificare un campo specifico che desideri utilizzare come "prima riga". Ad esempio, spedify order by schedule_id per restituire il schedule_id più basso per ogni status_id.