Как удалить и вставить записи, используя OUTPUT в T-SQL? - PullRequest
1 голос
/ 10 мая 2019

Я пытаюсь удалить некоторые записи и одновременно вставить их в другую таблицу.При удалении это само соединение на этой таблице, которое проверяет некоторые условия.Я хочу выполнить операции удаления и вставки с помощью предложения 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;

1 Ответ

0 голосов
/ 10 мая 2019

При самостоятельном соединении необходимо указать псевдоним.

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...