Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Init empty temp table with same column/type/precisions as target table
- SELECT TOP 0 *
- INTO #TempTable
- FROM [LinkedServer].[TargetDatabase].[dbo].[TargetTable] WITH (READUNCOMMITTED);
- -- Calculate current day data set and insert into temp table
- WITH [AggregatedData] AS (
- -- Not important, just know we're joining/grouping/summing some values here
- )
- INSERT INTO #TempTable
- ([Date] -- DATE
- ,[StoreId] -- INT
- ,[ItemId] -- VARCHAR(20)
- ,[UnitId] -- VARCHAR(10)
- ,[Price] -- DECIMAL(38, 20)
- ,[Quantity]) -- DECIMAL(38, 20)
- SELECT [Date]
- ,[StoreId]
- ,[ItemId]
- ,[UnitId]
- ,[Price]
- ,[Quantity]
- FROM [AggregatedData] WITH (READUNCOMMITTED)
- WHERE [Date] = @CurrentDate;
- -- Delete records from target table that don't exist in our temp data set
- DELETE tgt
- FROM [LinkedServer].[TargetDatabase].[dbo].[TargetTable] tgt WITH (READUNCOMMITTED)
- WHERE tgt.[Date] = @CurrentDate
- AND NOT EXISTS(
- SELECT 1
- FROM #TempTable src WITH (READUNCOMMITTED)
- WHERE src.[Date] = tgt.[Date]
- AND src.[StoreId] = tgt.[StoreId]
- AND src.[ItemId] = tgt.[ItemId]
- AND src.[UnitId] = tgt.[UnitId]
- AND src.[Price] = tgt.[Price]
- AND src.[Quantity] = tgt.[Quantity]);
- -- Insert records from temp table to target table that don't already exist there
- INSERT INTO [LinkedServer].[TargetDatabase].[dbo].[TargetTable]
- ([Date]
- ,[StoreId]
- ,[ItemId]
- ,[UnitId]
- ,[Price]
- ,[Quantity])
- SELECT [Date]
- ,[StoreId]
- ,[ItemId]
- ,[UnitId]
- ,[Price]
- ,[Quantity]
- FROM #TempTable src WITH (READUNCOMMITTED)
- WHERE NOT EXISTS(
- SELECT 1
- FROM [LinkedServer].[TargetDatabase].[dbo].[TargetTable] tgt WITH (READUNCOMMITTED)
- WHERE src.[Date] = tgt.[Date]
- AND src.[StoreId] = tgt.[StoreId]
- AND src.[ItemId] = tgt.[ItemId]
- AND src.[UnitId] = tgt.[UnitId]
- AND src.[Price] = tgt.[Price]
- AND src.[Quantity] = tgt.[Quantity]);
- -- Cleanup
- IF OBJECT_ID('tempdb..#TempTable') IS NOT NULL DROP TABLE #TempTable
Advertisement
Add Comment
Please, Sign In to add comment