WITH T ( A, B, C ,D ) AS ( SELECT 'A' , '20118112' , '001' , 'TT' FROM DUAL UNION ALL SELECT 'A' , '20118112' , '002' , 'YY' FROM DUAL UNION ALL SELECT 'A' , '20118114' , '003' , 'HH' FROM DUAL UNION ALL SELECT 'B' , '20118112' , '001' , 'UU' FROM DUAL UNION ALL SELECT 'B' , '20118112' , '002' , 'KK' FROM DUAL ) SELECT A , B , C , D FROM (SELECT A , B , C , D , ROW_NUMBER() OVER(PARTITION BY A ORDER BY B DESC , C DESC ) RN FROM T ) WHERE RN = 1