Obteniendo el valor máximo de las filas y uniéndose a otra tabla

Lo siento si esto es estúpido, soy realmente un novato tratando de aclarar esto.

Table A:
ID  Rank Name
1   100  Name1
1    45  Name2
2    60  Name3
2    42  Name4
2    88 Name5

Table B:
ID FileName
1  fn1
2  fn2

Lo que quiero es

1 fn1 name1
2 fn2 name5

Así se ve mi consulta, pero me da varias filas de resultados (en lugar de max) cuando hago la unión

select B.Id B.FileName,A.Name
FRom B
JOIN ( 
select A.Id, MAX(A.Rank)as ExpertRank 
from A 
group by A.Id
) as NewA on A.Id = B.ID 
join B on A.Rank = NewA.Rank

La subconsulta funciona bien, tengo el problema al hacer la unión.

¿Cómo puedo solucionar esto

Gracias

Tengo servidor SQL 2008 R2

La última es lo que me perdí.

select B.Id B.FileName,A.Name 
FRom B 
JOIN (  
select A.Id, MAX(A.Rank)as ExpertRank  
from A  
group by A.Id 
) as NewA on A.Id = B.ID  
join B on A.Rank = NewA.Rank 
and A.Id = newA.Id

Respuestas a la pregunta(4)

Su respuesta a la pregunta