- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
while exists (
select
C.CONTRAGENT_NAME,
PR.PHONE
from CONTRAGENTS C
inner join CONTRAGENT_PROPERTIES PR on PR.CONTRAGENT_ID = C.CONTRAGENT_ID
except select NAME,PHONE from IMPORT_SOURCE)
begin
declare @IDENTITIES table (CONTRAGENT_ID int)
insert CONTRAGENTS (
CONTRAGENT_NAME,
…)
output inserted.CONTRAGENT_ID into @IDENTITIES
select distinct
NAME,
…
from IMPORT_SOURCE
insert CONTRAGENT_PROPERTIES (
…,
PHONE,
…)
select
…,
S.PHONE
…
from @IDENTITIES I
inner join CONTRAGENTS C on C.CONTRAGENT_ID = I.CONTRAGENT_ID
cross apply (
select top 1
from IMPORT_SOURCE S
left join (
select
C.CONTRAGENT_NAME,
PR.PHONE
from CONTRAGENTS C
inner join CONTRAGENT_PROPERTIES PR on PR.CONTRAGENT_ID = C.CONTRAGENT_ID
) TX on TX.CONTRAGENT_NAME = S.NAME and TX.PHONE = S.PHONE
where TX.CONTRAGENT_NAME is null)
end
Импорт. В источнике за ключевые поля нужно было взять NAME и PHONE, которые в целевой базе — в разных таблицах. Курсоры — слишком долго.
Комментарии (0) RSS
Добавить комментарий