sql >> Databasteknik >  >> RDS >> Oracle

Få värde baserat på max för en annan kolumn grupperad efter en annan kolumn

Du kan närma dig detta med row_number() :

select key, val
from (select t.*, row_number() over (partition by key order by num desc) as seqnum
      from table_name t
     ) t
where seqnum = 1;

Om du anser det här mer "elegant" är nog en smaksak.

Jag bör påpeka att detta skiljer sig subtilt från din fråga. Detta returnerar garanterat en rad för varje key; din kan returnera flera rader. Om du vill ha det beteendet, använd bara rank() eller dense_rank() istället för row_number() .




  1. MayBeSQL kommer till Microsoft Access!

  2. Oracle Dynamic Pivoting

  3. ISDATE() Exempel i SQL Server

  4. Finns det säkerhetsrisker med Spotlight Cloud Monitoring?