Files
WebGIM/GimDB/import/Stored Procedures/stp_importMagRic_step2.sql
2017-01-27 22:26:50 +01:00

72 lines
2.7 KiB
Transact-SQL

-- =============================================
-- 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