Thanks for introducing the concept of Row_Number(). A good example to quickly understand the concept.
Just out of curiosity I thought: "What if we use CTE?"
------------------------------------------------------------------------------------------------
With MaxVer as
(
SELECT ProductID, MAX(Version)...