What happens if you have multiple rows with the same max? As an alternative this returns all records meeting the max() result:
proc sql;
create table WANT as
select distinct * /* Note take distinct out if you want all rows */
from HAVE
group by ID
having AMOUNT=max(AMOUNT);
quit;
... View more