Faz MERGE / Junção de registros em uma tabela
Esse sintaxe faz uma junção de uma tabela, efetuando alterações somente em registros que foram atualizados, removidos ou incluidos, dispensando o uso de truncate table e select * into ….
1 2 3 4 5 6 7 8 9 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 41 42 43 44 45 46 47 48 49 |
BEGIN MERGE INTO [Rh_EquipeMes] P USING ( SELECT distinct [Numero_cracha_supervisor] ,[Codigo_profissional_supervisor] ,[Nome_supervisor] FROM RecursosHumanos.dbo.V_Rh_EquipeMes ) S ON P.[Codigo_profissional_supervisor] = S.[Codigo_profissional_supervisor] and P.[Codigo_profissional_funcionario] = S.[Codigo_profissional_funcionario] --and P.EquipeDedicada = S.EquipeDedicada WHEN MATCHED THEN UPDATE SET [Numero_cracha_supervisor] = S.Numero_cracha_supervisor ,[Codigo_profissional_supervisor] = S.Codigo_profissional_supervisor ,[Nome_supervisor] = S.Nome_supervisor WHEN NOT MATCHED BY TARGET THEN INSERT ([Numero_cracha_supervisor] ,[Codigo_profissional_supervisor] ,[Nome_supervisor] ) VALUES (S.Numero_cracha_supervisor ,S.Codigo_profissional_supervisor ,S.Nome_supervisor ) WHEN NOT MATCHED BY SOURCE THEN DELETE; END GO |