This one works perfectly:
.
.
INNER JOIN dbo.v_R_System s ON p.ResourceID = s.ResourceID
) , cteRank AS (
SELECT cte.UserName
, RANK() OVER (PARTITION BY cte.UserName ORDER BY rnk.RankID) AS ProductRank
, rnk.vsVersion
FROM cteUsersAndSoftware cte
INNER JOIN #swRank rnk ON cte.Software = rnk.vsVersion)
SELECT UserName, vsVersion FROM cteRank
WHERE ProductRank = 1
Again, thanks a lot 🙂