0

人物表にデータを挿入しようとしています。並行して、挿入された人物ID(ID列値)をprovideridと共に他のテーブルからproviderpersonにコピーする必要があります。以下のクエリを試しましたが、エラーが発生しました。SQL Server OUTPUT ... INTO ....句を使用してデータをコピー中にエラーが発生しました

複数パート識別子「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 
       ) 

これをより良い方法で処理する方法を教えてください。前もって感謝します。

+0

可能なデュープ:[出力Inserted.Idし、別のフィールド]( http://stackoverflow.com/q/37339422/15498) –

答えて

1

使用

OUTPUT INSERTED.Person_ID 
     ,INSERTED.Provider_ID 
あなたが原因表の別名に動作しません下記の表alias..Exampleを使用することはできません

declare @id table 
(
id int 
) 

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


select * from @id 
+0

私は人のテーブルにprovider_idを挿入しないという問題でこの方法を知っています。 – StackUser

+0

@StackUser:質問は何ですか? – TheGameiswar

関連する問題