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

SQL-Abfrage zum Abrufen von OrderID, TransactionID, Status basierend auf dem Transaktionsstatus, der Char ist

Eine Methode verwendet row_number() :

select t.*
from (select t.*,
             row_number() over (partition by orderid
                                order by instr('LOW,MEDIUM,HIGH', status) as seqnum
      from transaction t
     ) t
where seqnum = 1;

instr() ist nur eine bequeme Möglichkeit, Zeichenfolgen eine Reihenfolge zuzuweisen. Es gibt die Position des Status im ersten Argument zurück, was in diesem Fall für Sortierzwecke praktisch ist.