WITH T(GOOD, PRICE, WEIGHT) AS ( SELECT 1, 100, 10 FROM DUAL UNION ALL SELECT 4, 150, 5 FROM DUAL UNION ALL SELECT 5, 200, 5 FROM DUAL UNION ALL SELECT 10, 110, 5 FROM DUAL UNION ALL SELECT 13, 200, 10 FROM DUAL ) SELECT * FROM ( SELECT T.* , ROW_NUMBER() OVER(ORDER BY GOOD ASC) RN FROM T ) WHERE RN = 2 ;