Voici une autre façon de le faire sans sous-requêtes. Cette méthode sera souvent plus performante que les autres, il vaut donc la peine de tester les deux méthodes pour voir laquelle offre les meilleures performances.
SELECT
PRT.PartID,
PRT.PartNumber,
PRT.Description,
PRC1.Price,
PRC1.PriceDate
FROM
MyParts PRT
LEFT OUTER JOIN MyPrices PRC1 ON
PRC1.PartID = PRT.PartID
LEFT OUTER JOIN MyPrices PRC2 ON
PRC2.PartID = PRC1.PartID AND
PRC2.PriceDate > PRC1.PriceDate
WHERE
PRC2.PartID IS NULL
Cela donnera plusieurs résultats si vous avez deux prix avec le même PriceDate EXACT (la plupart des autres solutions feront de même). De plus, il n'y a rien pour expliquer que la date du dernier prix soit dans le futur. Vous voudrez peut-être envisager une vérification pour cela, quelle que soit la méthode que vous utiliserez.