Files
2014-02-18 18:01:35 +01:00

56 lines
2.0 KiB
Transact-SQL

-- =============================================
-- Author: S.E. Locatelli
-- Create date: 2013.11.27
-- Description: Procedura per import dati in ClientDet da dati ProductionLogRaw/ClientsRaw
-- =============================================
CREATE PROCEDURE [ext].[stp_mergeClientDet]
(
@source NVARCHAR(20) = 'ProductionLogRaw' -- nome della tabella sorgente tra ProductionLogRaw e ClientsRaw
)
AS
BEGIN
SET NOCOUNT ON;
-- Create a temporary table variable to hold the output actions.
DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20));
-- import con MERGE... verifico tipo di caricamento richiesto!
IF @source = 'ProductionLogRaw' -- carico da tracciato produzione
BEGIN
MERGE INTO ClientDet AS Target
USING (SELECT DISTINCT CodClient FROM ext.ProductionLogRaw)
AS Source
ON Target.CodClient = Source.CodClient
--WHEN MATCHED THEN
-- UPDATE SET ClientName = Source.ClientName
WHEN NOT MATCHED BY TARGET THEN
INSERT (CodClient, ClientName, CodAg, ZipCode, City, [State], Nation, TranspZone) VALUES (CodClient, '#### - ' + CodClient, '', '', '', '', '', '')
OUTPUT $action INTO @SummaryOfChanges;
END
ELSE IF @source = 'ClientsRaw' -- carico da anagrafica
BEGIN
MERGE INTO ClientDet AS Target
USING (SELECT DISTINCT CodClient, ClientName, CodAg, ZipCode, City, [State], Nation, TranspZone FROM ext.ClientsRaw)
AS Source
ON Target.CodClient = Source.CodClient
WHEN MATCHED THEN
UPDATE SET ClientName = Source.ClientName, CodAg = Source.CodAg, ZipCode = Source.ZipCode, City = Source.City, [State] = Source.[State], Nation = Source.Nation, TranspZone = Source.TranspZone
WHEN NOT MATCHED BY TARGET THEN
INSERT (CodClient, ClientName, CodAg, ZipCode, City, [State], Nation, TranspZone) VALUES (CodClient, ClientName, CodAg, ZipCode, City, [State], Nation, TranspZone)
OUTPUT $action INTO @SummaryOfChanges;
END
-- Query the results of the table variable.
SELECT Change, COUNT(*) AS CountPerChange
FROM @SummaryOfChanges
GROUP BY Change;
END