運行SQL Server 2016 Express。SQL Server:按日期時間間隔分組
我有這個表的樣本數據:
ID Datetime2 other columns
------------------------------------------
1 2017-01-14 11:00:00 ...
1 2017-01-14 11:01:00 ...
1 2017-01-14 11:02:00 ...
1 2017-01-14 11:03:00 ...
1 2017-01-14 11:10:00 ... --> 7 minutes gap
1 2017-01-14 11:11:00 ...
1 2017-01-14 11:20:00 ... --> 9 minutes gap
1 2017-01-14 11:22:00 ...
1 2017-01-14 11:24:00 ...
我想有這種結果
ID start end other columns
-----------------------------------------------------------
1 2017-01-14 11:00 2017-01-14 11:03 ...
1 2017-01-14 11:10 2017-01-14 11:11 ...
1 2017-01-14 11:20 2017-01-14 11:24 ...
一定要我創建一個新的組時,我們有5或X分鐘的間隔或更多當前行日期時間值和下一行日期時間值之間。
我有這種類型的查詢,但我不知道在5分鐘或更長的時間間隔內將行分組在哪裏。
WITH groups(DateTimeField, grp) AS
(
SELECT DISTINCT
DateTimeField,
DATEDIFF(MINUTE, DateTimeField, lag(DateTimeField) OVER (ORDER BY DateTimeField DESC)) grp
FROM
MyTable
WHERE
ID = 1
)
SELECT
COUNT(*) AS consecutiveDates,
MIN(DateTimeField) AS minDate,
MAX(DateTimeField) AS maxDate
FROM
groups
GROUP BY
grp
ORDER BY
1 DESC, 2 DESC
最好的問候,
的可能的複製[組記錄由連續的日期時,日期是不完全連續的(HTTP://計算器.com/questions/41721245/group-records-by-consecutive-dates-when-dates-not-exactly-consecutive) – GurV
您也許可以使用LAG()函數來識別先前記錄超過5個記錄分鐘之外。那會給你休息時間的目標。 –