-- ============================================= -- Author: GAR -- Create date: 2015.11.20 -- Description: Import iniziale dati: Giacenze -- ============================================= CREATE PROCEDURE [import].[stp_importMagRic_step2] AS BEGIN SET NOCOUNT ON; --SELECT * FROM [som_ita].[tmp_ImportRic_A] WHERE Descrizione = '' --SELECT * FROM MagRic --SELECT * FROM AnagLocazioni DECLARE @Test BIT = 0; -- se 1 fa il rollback DECLARE @DataImp AS SMALLDATETIME = GETDATE(); DECLARE @SummaryOfChanges TABLE (Change VARCHAR(10)); BEGIN TRANSACTION;; WITH cteImportRicA AS ( SELECT LTRIM(RTRIM(UPPER(Gruppo))) AS Famiglia ,LTRIM(RTRIM(UPPER(REPLACE(CASE WHEN ISNULL([Descrizione], '') <> '' THEN [Descrizione] ELSE [CodCostruttore] END, '"', '')))) AS Descrizione -- tolgo eventuali " ,LTRIM(RTRIM(UPPER(NomeCostruttore))) AS NomeCostruttore ,LTRIM(RTRIM(UPPER(CodCostruttore))) AS CodCostruttore ,LTRIM(RTRIM(UPPER(CodSomaschini))) AS CodInterno ,Giacenza FROM [som_ita].[tmp_ImportRic_A] ) ,cteBis AS ( SELECT ai.* ,'MAG00' AS CodLocazione ,tmp.Giacenza FROM cteImportRicA AS tmp INNER JOIN dbo.AnagItems AS ai ON tmp.Famiglia = ai.Famiglia AND tmp.Descrizione = ai.Descrizione AND tmp.NomeCostruttore = ai.NomeCostruttore AND tmp.CodCostruttore = ai.CodCostruttore AND tmp.CodInterno = ai.CodInterno ) -- SELECT idxItem, 'MAG00' AS CodLocazione , Giacenza FROM cteBis WHERE idxItem = 1310 MERGE INTO dbo.MagRic AS Target USING ( SELECT idxItem,CodLocazione,SUM(Giacenza) AS Giacenza FROM cteBis GROUP BY idxItem ,CodLocazione ) AS Source ON Target.idxItem = Source.idxItem AND Target.CodLocazione = Source.CodLocazione WHEN NOT MATCHED BY TARGET THEN INSERT (idxItem,CodLocazione,Giacenza,dtLastUpd) VALUES (idxItem,CodLocazione,Giacenza,@DataImp) WHEN MATCHED THEN UPDATE SET Giacenza = Source.Giacenza ,dtLastUpd = @DataImp --WHEN NOT MATCHED BY SOURCE THEN DELETE OUTPUT $ACTION INTO @SummaryOfChanges;-- carico i cambiamenti in tabella SELECT * FROM dbo.MagRic IF @Test = 1 ROLLBACK ELSE COMMIT; -- Carico le modifiche fatte in variabile Testo SELECT Change + ' : ' + CONVERT(VARCHAR(10), COUNT(*)) FROM @SummaryOfChanges GROUP BY Change; END