आपने जो लिखा वह खंड से ए गायब था, इसलिए यह पूरी तरह स्पष्ट नहीं है कि आप कहां गलत हो गए लेकिन यह काम करना चाहिए
select
B.Id,
B.FileName,
A.Name
FRom B
INNER JOIN A
ON A.id = B.id
INNER JOIN (
select A.Id, MAX(A.Rank)as ExpertRank
from A
group by A.Id
) as NewA
ON a.Id = NewA.ID
AND a.Rank = NewA.ExpertRank
इसे यहां काम करते हुए देखें
वैकल्पिक रूप से आप इसके बजाय राउनंबर का उपयोग कर सकते हैं
WITH CTE AS
(
SELECT ID,
RANK,
Name,
ROW_NUMBER() OVER (PARTITION BY ID ORDER BY RANK DESC) rn
FROM A
)
SELECT b.Id b.FileName,cte.Name
FROM
b
INNER JOIN cte
ON b.id = cte.id
and cte.rn = 1
इसे यहां काम करते हुए देखें