forked from ktaranov/sqlserver-kit
-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathGenerateTSQLTimeSlices.sql
More file actions
30 lines (27 loc) · 927 Bytes
/
GenerateTSQLTimeSlices.sql
File metadata and controls
30 lines (27 loc) · 927 Bytes
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
/*
Author: Atom
Original link: http://billfellows.blogspot.ru/2017/07/generate-tsql-time-slices.html
Desctiption: Generate TSQL time slices
*/
SELECT
D.Slice AS SliceStart
, LEAD
(
D.Slice
, 1
-- Default to midnight
, TIMEFROMPARTS(0,0,0,0,0)
)
OVER (ORDER BY D.Slice) AS SliceStop
, ROW_NUMBER() OVER (ORDER BY D.Slice) AS SliceLabel
FROM
(
-- Generate 15 second time slices
SELECT
TIMEFROMPARTS(A.rn, B.rn, C.rn, 0, 0) AS Slice
FROM
(SELECT TOP (24) -1 + ROW_NUMBER() OVER (ORDER BY(SELECT NULL)) FROM sys.all_objects AS AO) AS A(rn)
CROSS APPLY (SELECT TOP (60) (-1 + ROW_NUMBER() OVER (ORDER BY(SELECT NULL))) FROM sys.all_objects AS AO) AS B(rn)
-- 4 values since we'll aggregate to 15 seconds
CROSS APPLY (SELECT TOP (4) (-1 + ROW_NUMBER() OVER (ORDER BY(SELECT NULL))) * 15 FROM sys.all_objects AS AO) AS C(rn)
) D