0

我正在使用 SQL Server 2008 并尝试在 SSIS 包数据流任务中编写查询,以根据来自另一个数据库的结果集从一个数据库中读取数据。

我有多个表 A、B、C、D、E 等,我正在尝试编写一个选择来连接这些表并在过滤后获取数据。我在以下查询中收到“无法绑定多部分标识符”错误

SELECT
A.1 as A1,

A.2 as A2,

A.3 as A3,

B.1 as B1,

(Select C.1 from C 

        left join cc on c.2 = cc.2

        where C.x = A.x) as C1,

(Select D.1 from D where D.x = A.x) as D1,

E.4 as E4

FROM A

 left join B on B.Y = A.Y

 inner join C on C.Y = A.Y

 inner join D on D.Y = C.X

 left join E on E.Y = D.Z AND E.Z = 'ZZZZ'

WHERE A.P = ?

查询的一般结构如上所示,如果我完全删除 where 子句或给出简单的"WHERE A.P = 'PPPP'". 它看起来很简单,我没有使用 where 子句中子查询的任何数据。我究竟做错了什么?

4

1 回答 1

0

此错误意味着引用无法绑定到对象。但是,它不引用表达式的列部分,而只是引用之前的部分。

因此,如果Pis not column in AA.P则会生成类似“未找到列”的错误。如果A没有在from子句中定义,那么A.P会给你“找不到多部分标识符错误”。

一个常见的原因是滥用别名。如果你有这样的代码:

from TableA a
where TableA.col . . .

然后你会得到错误。虽然TableAis 在from子句中,但它在查询中是通过它的别名A而不是表名知道的。这也可能是因为您在表达式中输入了错误的表名、模式名、数据库名或服务器名。

于 2013-06-01T07:13:35.270 回答