SQL执行报错:多部分标识符无法绑定,求INSERT语句修正方案
解决Msg 4104:多部分标识符无法绑定的问题
这个报错的根源很明确——你在INSERT...SELECT的WHERE子句里直接引用了目标表[DM_AG_BIZ].[SC].[WEBN_X86_BR_BILLDOC]的字段,但这个表并没有出现在SELECT的FROM子句中,SQL Server根本找不到这个表的上下文,所以会抛出“多部分标识符无法绑定”的错误。
我根据你的需求描述,分两种常见场景给你解决方案:
场景1:你需要新增行到目标表
如果你的需求是从源表中筛选出那些BILL_NUM和目标表已存在的Bill_Doc匹配的记录,把它们的ID_NFNUM和ZPREFNO作为新行的RPS和Nota_Fiscal插入目标表,那需要用JOIN来关联两个表,写法如下:
INSERT INTO [DM_AG_BIZ].[SC].[WEBN_X86_BR_BILLDOC] ([RPS], [Nota_Fiscal]) SELECT z.[ID_NFNUM], z.[ZPREFNO] FROM [DM_AG_IT].[dbo].[ZOH_BLS08_IDL] z INNER JOIN [DM_AG_BIZ].[SC].[WEBN_X86_BR_BILLDOC] w ON z.[BILL_NUM] = w.[Bill_Doc]
场景2:你实际是想更新目标表已有的行
如果你的真实需求是把目标表中Bill_Doc和源表BILL_NUM匹配的行,对应的RPS和Nota_Fiscal字段更新为源表的ID_NFNUM和ZPREFNO,那你应该用UPDATE语句而不是INSERT(毕竟INSERT是新增行,不是修改已有数据),写法如下:
UPDATE w SET w.[RPS] = z.[ID_NFNUM], w.[Nota_Fiscal] = z.[ZPREFNO] FROM [DM_AG_BIZ].[SC].[WEBN_X86_BR_BILLDOC] w INNER JOIN [DM_AG_IT].[dbo].[ZOH_BLS08_IDL] z ON w.[Bill_Doc] = z.[BILL_NUM]
内容的提问来源于stack exchange,提问作者Jose Cera
相关产品推荐
相关产品推荐

