Първо разберете кои записи трябва да бъдат актуализирани:
select *
from tbl_order o
inner join tbl_group g on
g.grp_id = o.grp_id
inner join tbl_indicator i on
i.grp_nbr = g.grp_nbr
and i.sect_nbr = g.sect_nbr
where
g.indicat != i.indicat
Сега променете заявката, за да актуализирате тези записи с правилния grp_id. Забележете, че добавих допълнително съединение към таблицата tbl_group с псевдоним "g2". Това ще бъде правилната група.
update o set
o.grp_id = g2.grp_id
from tbl_order o
inner join tbl_group g on
g.grp_id = o.grp_id
inner join tbl_indicator i on
i.grp_nbr = g.grp_nbr
and i.sect_nbr = g.sect_nbr
inner join tbl_group g2 on
g2.grp_nbr = i.grp_nbr
and g2.sect_nbr = i.sect_nbr
and g2.indicat = i.indicat
where
g.indicat != i.indicat
Обърнете внимание, че поради вътрешното присъединяване към tbl_group g2, записите няма да бъдат актуализирани, ако не съществува запис tbl_group, където indicat съвпада със стойността на indicat на свързания с него запис tbl_indicator.