create cursor tblValues ( ; cKey c( 32 ), ; cValue c( 16 ), ; nPriority i ; ) insert into tblValues values ('apple', 'red', 8) insert into tblValues values ('apple', 'yellow', 2) insert into tblValues values ('apple', 'brown', 0) insert into tblValues values ('corn', 'green', 4) insert into tblValues values ('corn', 'yellow', 9) insert into tblValues values ('corn', 'brown', 2) insert into tblValues values ('eggs', 'pink', 6) insert into tblValues values ('eggs', 'purple', 7) insert into tblValues values ('eggs', 'white', 8) select tblValues.cKey, ; tblValues.cValue, ; tblValues.nPriority ; from tblValues ; join ( ; select T.cKey, ; Max(T.nPriority) as nMaxPriority ; from tblValues as T; group by 1 ; ) MaxPriorityTemp ; on tblValues.cKey = MaxPriorityTemp.cKey and ; tblValues.nPriority = MaxPriorityTemp.nMaxPriority ; into cursor c_test