【问题标题】:Error while copy data using SQL Server OUTPUT ...INTO .... clause [duplicate]使用 SQL Server OUTPUT ...INTO .... 子句复制数据时出错 [重复]
【发布时间】:2016-08-30 13:14:55
【问题描述】:

我正在尝试将数据插入到个人表中。 Parallely 我必须将插入的人员 ID(身份列值)与 providerid 一起从其他表复制到 providerperson。我尝试了以下查询,但出现错误。

无法绑定多部分标识符“P.Provider_ID”。

INSERT INTO PERSONS (
            FirstName
            ,LastName
            ,Gender
            ,DOB
            ,EmailID
            ,OfficePhone
            ,Fax
            ,Mobile
            ,CertificationType_ID
            --,License
            --,StateCertificaionNo
            --,StateCertificationExpiration
            --,Comments
            ,ERTCleared
            ,IsAMR
            ,IsActive
            ,CreatedDate
            ,ModifiedDate
            ,IsCrewMember
            ,UserName
            )
        OUTPUT INSERTED.Person_ID
            ,P.Provider_ID
        --,getdate()
        --,getdate()
        --,@appuserId
        --,@appuserId
        INTO @ProviderPersons(PersonID, ProviderID)
        --00, CreatedDate, ModifiedDate, CreatedUser_ID, ModifiedUser_ID)
        SELECT S.FirstName
            ,S.LastName
            ,S.Gender
            ,S.DOB
            ,S.EmailID
            ,S.OfficePhone
            ,S.Fax
            ,S.Mobile
            ,1 AS CertificationType_ID
            ,0 AS ERTCleared
            ,CASE 
                WHEN S.IsAMR = 'Yes'
                    THEN 1
                ELSE 0
                END AS IsAMR
            ,1 AS IsActive
            ,getdate() AS CreatedDate
            ,getdate() AS ModifiedDate
            ,1 AS IsCrewMember
            ,S.UserName
        FROM [dbo].[STA_CrewMembers] S
        INNER JOIN [dbo].[Providers] P ON P.BusinessUnitNumber = S.BusinessUnitNumber
            OR P.NAME = S.PROVIDER
        WHERE NOT EXISTS (
                SELECT 1
                FROM Persons
                WHERE EmailID = S.EmailID
                )

请建议我如何以更好的方式处理此问题。提前致谢。

【问题讨论】:

标签: sql-server sql-server-2008 sql-server-2012 sql-server-2008-r2


【解决方案1】:

使用

OUTPUT INSERTED.Person_ID
        ,INSERTED.Provider_ID

您不能使用表别名。由于表别名,下面的示例将不起作用

declare @id table
(
id int
)

insert into t1
output n.id into @id
select top 10* from numbers n


select * from @id

【讨论】:

  • 我知道这样的问题是我没有将 provider_id 插入到我的个人表中。
  • @StackUser:那问什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-01
相关资源
最近更新 更多