Получение максимального значения из строк и соединение с другой таблицей

Извините, если это глупо, я действительно новичок, пытающийся прибить это.

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

Что я хочу это

1 fn1 name1
2 fn2 name5

Вот как выглядит мой запрос, но он дает мне несколько строк результатов (а не максимум), когда я выполняю объединение

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

Подзапрос работает нормально, у меня возникла проблема с выполнением этого соединения.

Как я могу это исправить?

Благодарю.

У меня есть SQL Server 2008 R2

Последнее, что я пропустил.

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

Ответы на вопрос(2)

Ваш ответ на вопрос