Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

atualização do sql (me ajude)


Primeiro, descubra quais registros precisam ser atualizados:
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

Agora, modifique a consulta para atualizar esses registros com o grp_id correto. Observe que adicionei uma junção extra à tabela tbl_group com um alias de "g2". Este será o grupo correto.
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

Observe que devido ao inner join em tbl_group g2, os registros não serão atualizados se não existir nenhum registro tbl_group onde indicat corresponda ao valor indicat de seu registro tbl_indicator associado.