I have an Oracle SQL query that uses FETCH FIRST to find employees with the highest annual salary in a PeopleSoft database.
SELECT A.EMPLID, A.ANNUAL_RT
FROM PS_EMPLOYEES A
ORDER BY A.ANNUAL_RT DESC
FETCH FIRST ROW WITH TIES;
EMPLID ANNUAL_RT
20218 100000
10300 100000
26992 100000
17864 100000
I want to sort my results by EMPLID. However, since I'm using FETCH FIRST 1 ROW WITH TIES, adding EMPLID to my ORDER BY clause limits my results to the 1 employee with the lowest ID number.
SELECT A.EMPLID, A.ANNUAL_RT
FROM PS_EMPLOYEES A
ORDER BY A.ANNUAL_RT DESC, A.EMPLID ASC
FETCH FIRST 1 ROW WITH TIES;
EMPLID ANNUAL_RT
10300 100000
How can I sort my results without affecting which rows are returned by FETCH FIRST?
EMPLID ANNUAL_RT
10300 100000
17864 100000
20218 100000
26992 100000
Enclose your query as a table expression (a common table expression will also do). This way you can post-process it.
For example: