-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSqlQuery_1.sql
More file actions
36 lines (26 loc) · 1.28 KB
/
SqlQuery_1.sql
File metadata and controls
36 lines (26 loc) · 1.28 KB
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
/* What is the purpose of this script? */
/* How else could this be done? */
DROP TABLE IF EXISTS #TranDateFixedBatchUpdates
CREATE TABLE #TranDateFixedBatchUpdates
([LINE_UNIQUE_KEY] [int] NOT NULL)
DECLARE @MIN_TRAN_DATE [DATETIME] = (SELECT CAST(MIN([DATE_SPK]) AS DATETIME) FROM [dbo].[DIM_DATE]);
INSERT INTO #TranDateFixedBatchUpdates
SELECT [LINE_UNIQUE_KEY] FROM [Finance].[Transactions] WHERE TRAN_DATE_FIXED < @MIN_TRAN_DATE
DECLARE @RowsToProcess INT
SELECT @RowsToProcess = COUNT(*) FROM #TranDateFixedBatchUpdates
PRINT 'Rows to process ' + CONVERT(VARCHAR(MAX),@RowsToProcess)
DECLARE @BatchSize INT = 10000;
DECLARE @idxtable TABLE ([LINE_UNIQUE_KEY] INT)
WHILE EXISTS (SELECT 1 FROM #TranDateFixedBatchUpdates)
BEGIN
INSERT INTO @idxtable SELECT TOP (@BatchSize) [LINE_UNIQUE_KEY] FROM #TranDateFixedBatchUpdates
UPDATE
t
SET TRAN_DATE_FIXED = @MIN_TRAN_DATE
FROM [Finance].[Transactions] t
INNER JOIN @idxtable it ON t.[LINE_UNIQUE_KEY] = it.[LINE_UNIQUE_KEY]
DELETE #TranDateFixedBatchUpdates WHERE [LINE_UNIQUE_KEY] IN (SELECT [LINE_UNIQUE_KEY] FROM @idxtable)
DELETE @idxtable
SELECT GETUTCDATE()
WAITFOR DELAY '00:00:00.05'
END