Кто-нить может объяснить, чем мог не устроить такой гипотетический синтаксис (который чисто логически должен работать, но вызывает ошибку в точке A.BId "не удалось выполнить привязку составного идентификатора A.BId", типа из-за того, что там нельзя получить доступ к таблице A):
SELECT BB.B1,
BB.B2,
A.A1
FROM [dbo].[A] as A
cross join (select top 1 B.B1, B.B2 from [dbo].[B] as B where A.BId = B.Id) as BB
что разрабам T-SQL пришлось придумывать ему такую замену:
SELECT BB.B1,
BB.B2,
A.A1
FROM [dbo].[A] as A
cross apply (select top 1 B.B1, B.B2 from [dbo].[B] as B where A.BId = B.Id) as BB
?
Аналогично для OUTER APPLY, для чего он нужен, когда можно было сделать через JOIN (ведь что такое JOIN знают все, а про APPLY знает намного меньше, и большинство в таких ситуациях начнет писать запрос с джойном, как в первом примере, который не будет работать).
И еще получается, что Right Join через APPLY никак не сделать, а если нужно?