Try:
SELECT TOP 1 * FROM Trn_Purchase ORDER BY PurchaseDate DESC
"yes each item code"
If you want a specific output, then give specific examples, and explain exactly what you want: it means we can reply with a specific solution!
Try:
SELECT ItemCode, PurchaseDate, Price
FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY ItemCode ORDER By PurchaseDate DESC) AS rn
FROM Trn_Purchase) x
WHERE rn = 1