Here's the basic idea of the select you need :
SELECT dtLastSales.PartNum, dtLastSales.mxShipDate, inv.UnitPrice FROM invcdtl inv INNER JOIN
(Select PartNum, MAX(ShipDate) AS mxShipDate FROM dbo.Invcdtl GROUP BY PartNum) dtLastSales
on inv.PartNum = dtLastSales.PartNum AND inv.ShipDate = dtLastSales.mxShipDate
Keep in mind that this can gove you some ties and you must decide how you want to deal with them.
Does that solve you problem?