Как обновить статус с помощью данных о конфликтах, в которых для ChemicalId для временной таблицы #chemical есть такой же химический идентификатор для временной таблицы #temp?
шагов для достижения этого
1 - получить связанные детали для детали существует во временной таблице #temp, которая имеет такой же маскированный идентификатор в временной таблице # parts
, в этом случае результатом будет
PartId MaskId ChemicalId
200 1000 901
500 1700 909
600 1700 909
2 - проверка временной таблицы #chemical для partid или связанной части id для того же maskId
если химическое вещество на шаге 1 отличается от химического вещества в химическом веществе временной таблицы, то ничего не происходит в статусе.
если химическое вещество в шаге 1 такое же химическое вещество в химическом веществе временного стола, тогда статус будет обновляться до конфликт основан на идентификаторе детали.
Здесь 200 имеют 901 химический идентификатор для временной таблицы #temp, а химическая временная таблица имеет 901 для 100, тогда статус будет конфликтным, поскольку он связан с тем же идентификатором маски и имеет одинаковый химический идентификатор 901 .
Здесь 700 имеют 909 химических идентификаторов для временной таблицы #temp, а для химической временной таблицы 909 для 500 и 600, тогда статус будет ничего не изменилось, потому что он связан с идентичным идентификатором маски и имеет другой химический идентификатор 920.
create table #temp
(
partid int,
maskid int,
chemicalid int,
status nvarchar(50)
)
insert into #temp
values
(100,1000,901,null),
(700,1700,909,null)
create table #parts
(
PartId int,
maskId int
)
insert into #parts (PartId,maskId)
values
(100,1000),
(200,1000),
(500,1700),
(600,1700),
(700,1700)
create table #Chemical
(
Chemicalmasterid int,
ChemicalId int,
PartId int
)
insert into #Chemical(Chemicalmasterid,ChemicalId,PartId)
values
(1 ,901,100),
(7 ,920,700)
final result
100 1000 901 conflict chemical id
700 1700 909 null
что я пробовал
update t set status ='conflict chemical id' from #temp t