SQL报错Msg 4104:多部分标识符E.EmployeeNumber无法绑定问题咨询
SQL 4104错误原因分析及解决方法
报错信息:消息 4104,级别 16,状态 1,第31行,多部分标识符 "E.EmployeeNumber" 无法绑定
错误产生原因
- 表别名
E的作用域仅限子查询内部。你给tblEmployee1定义的别名E只在嵌套的内层查询里有效,内层查询执行完成后会被封装为独立的结果集newTable,外层查询无法识别内层的别名E,因此调用E.EmployeeNumber时会触发绑定失败。 - 内层查询已经把
E.EmployeeNumber重命名为ENumber输出,外层只能通过newTable的字段名访问数据,无法再调用内层原始表的别名和字段名。
解决方法
两种可行修改方案,任选其一即可:
方案1:直接使用子查询输出的字段名排序
仅修改最后的ORDER BY语句,用内层输出的别名ENumber排序即可,修改后完整代码如下:
SELECT * FROM ( SELECT E.EmployeeNumber as ENumber, E.EmployeeFirstName, E.EmployeeLastName, T.EmployeeNumber as TNumber, sum(T.Amount) as TotalAmount FROM tblEmployee1 as E LEFT JOIN tblTransaction as T ON E.EmployeeNumber = T.EmployeeNumber GROUP BY E.EmployeeNumber, T.EmployeeNumber, E.EmployeeFirstName, E.EmployeeLastName ) AS newTable ORDER BY ENumber
方案2:带上子查询别名调用对应字段排序
你也可以明确指定子查询的别名来调用字段,写法如下:
-- 仅需替换原ORDER BY行即可 ORDER BY newTable.ENumber
内容的提问来源于stack exchange,提问作者Al J
相关产品推荐
相关产品推荐

