O identificador de várias partes não pôde ser vinculado - SubQuery
Esquema:
create table TableA (A1 int)
create table TableB (B1 int, B2 int)
create table TableC (C1 int)
Consulta problemática:
SELECT *
FROM TableA a
INNER JOIN TableB b ON b.B1=a.A1
INNER JOIN (SELECT TOP 1 *
FROM TableC c
WHERE c.C1=b.B1 ORDER BY c.C1) d ON d.C2=b.B2
INNER JOIN OtherTable ON OtherTable.Foo=d.C1
Criar este esquema e executar a consulta no SQLFiddle nos resultados do SQL Server 2008 em:
The multi-part identifier "b.B1" could not be bound.: SELECT * FROM TableA a INNER JOIN TableB b ON b.B1=a.A1 INNER JOIN (SELECT TOP 1 * FROM TableC c WHERE c.C1=b.B1 ORDER BY c.C1) d ON d.C2=b.B2
Usando CROSS APPLY em vez de INNER JOIN para a subconsulta corrige o problema
Qual é o problema?
Edit: eu adicionei "TOP 1", que fazia parte da consulta real e é uma parte relevante do problema.
Edit2: Mais informações sobre o problema.