Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie wähle ich eindeutige Werte aus einer Tabelle aus?

Diese Abfrage wird gibt eindeutige status_ids zurück, aber nur, wenn die Kombination dieser status_id und jedes dieser anderen Felder ebenfalls eindeutig ist. Sie können die eindeutigen status_ids auswählen, aber Sie können nicht alle Werte der anderen Felder zurückgeben, wenn es mehr als eine Kombination für jede status_id gibt.

[Bearbeiten]

Wenn Sie nur den ersten Datensatz für jeden Status wünschen:

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

Statt row_number , dense_rank und rank werden auch für verschiedene Arten der Nummerierung verwendet, aber in diesem Fall möchten Sie wirklich eine einzelne Zeile, und row_number wird ausreichen.

Nicht sicher order by ist obligatorisch. Wenn nicht, kannst du es weglassen. Wenn dies der Fall ist, können Sie einen Dummy-Wert angeben oder ein bestimmtes Feld angeben, das Sie als „erste Zeile“ verwenden möchten. Geben Sie beispielsweise order by schedule_id an um die niedrigste schedule_id für jede status_id zurückzugeben.