- IF OBJECT_ID(N'TEMPDB.DBO.#search_data') IS NOT NULL
- DROP TABLE #search_data
- GO
-
- CREATE TABLE #search_data ([times] DATETIME,[val] INT)
-
- INSERT INTO #search_data ([times],[val]) VALUES
- ('2001-01-01 00:00:00',13),
- ('2001-01-01 00:10:00',22),
- ('2001-01-01 00:20:00',31),
- ('2001-01-01 00:40:00',5 ),
- ('2001-01-01 00:50:00',64),
- ('2001-01-01 02:30:00',73),
- ('2001-01-01 04:10:00',63),
- ('2001-01-01 04:50:00',12),
- ('2001-01-01 06:30:00',32)
-
-
-
- IF OBJECT_ID(N'TEMPDB.DBO.#base') IS NOT NULL
- DROP TABLE #base
- GO
-
- CREATE TABLE #base ([times] DATETIME)
- DECLARE @start_datetime DATETIME = '2000-01-01 00:00:00',
- @end_datetime DATETIME = '2000-02-01 00:00:00'
- ;WITH DTs([times])
- AS
- (
- SELECT @start_datetime
- UNION ALL
- SELECT [times] = DATEADD(MINUTE,10, [times])
- FROM [DTs]
- WHERE [times] < @end_datetime
- )
- INSERT INTO #base ([times]) SELECT [times] FROM [DTs] OPTION (MaxRecursion 0)
- MERGE #search_data AS Target
- USING (SELECT [times] FROM #base) AS Source
- ON (Target.[times] = Source.[times])
-
- WHEN NOT MATCHED BY TARGET THEN
- INSERT ([times],[val]) VALUES ([times],0);
- SELECT [times],[val] FROM #search_data