いくつかのレコードを削除し、同時に他のテーブルに挿入しようとしています。削除している間、それはいくつかの条件をチェックするそのテーブルの自己結合です。OUTPUT句を使用して削除操作と挿入操作の両方を実行したい。
コード:
DELETE dbo.Test
OUTPUT DELETED.Recipient_Key,
DELETED.Home_Dt,
DELETED.Batch_No,
DELETED.Brand_Cd,
DELETED.Campaign_Cd,
DELETED.Campaign_Nm,
DELETED.CampaignType_Cd
INTO dbo.Error
FROM dbo.Test AS PR1
INNER JOIN Staging.dbo.Test AS PR2
ON PR2.Recipient_Key = PR1.Recipient_Key
AND PR2.Batch_No = PR1.Batch_No
AND PR2.Home_Dt <> PR1.Home_Dt;
自己結合では、エイリアスを指定する必要があります。
drop table if exists #test;
create table #test (
Id int not null primary key clustered identity(1, 1)
, SomeColumn varchar(255) not null
);
drop table if exists #error;
create table #error (
Id int not null primary key clustered
, SomeColumn varchar(255) not null
);
insert into
#test (SomeColumn)
values
('A'), ('B'), ('C');
select * from #test;
select * from #error;
delete a
output
Deleted.Id, Deleted.SomeColumn
into
#error (Id, SomeColumn)
from
#test as a
inner join
#test as b
on
a.Id = b.Id
and a.Id % 2 = 1;
select * from #test;
select * from #error;
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加