4
我有這樣一個表:如何合併窗口內的重疊時間?
CREATE TABLE #TEMP (Name VARCHAR(255), START_TIME datetime, END_TIME datetime);
INSERT INTO #TEMP VALUES('John', '2012-01-01 09:00:01', '2012-01-01 12:00:02')
INSERT INTO #TEMP VALUES('John', '2012-01-01 09:40:01', '2012-01-01 11:00:02')
INSERT INTO #TEMP VALUES('John', '2012-01-02 05:00:01', '2012-01-02 05:15:02')
INSERT INTO #TEMP VALUES('David', '2012-01-04 05:00:01', '2012-01-04 05:15:02')
INSERT INTO #TEMP VALUES('David', '2012-01-05 07:01:01', '2012-01-05 15:15:02')
SELECT *
FROM #TEMP
DROP TABLE #TEMP
而且數據是:
Name START_TIME END_TIME
1 John 2012-01-01 09:00:01.000 2012-01-01 12:00:02.000
2 John 2012-01-01 09:40:01.000 2012-01-01 11:00:02.000
3 John 2012-01-02 05:00:01.000 2012-01-02 05:15:02.000
4 David 2012-01-04 05:00:01.000 2012-01-04 05:15:02.000
5 David 2012-01-05 07:01:01.000 2012-01-05 08:15:02.000
給定一個數說,6,我試圖做此表GROUP BY
和合並重疊的時間在6小時前後的窗口內。因此,在上表中,行1
和2
將合併成一個單一的行,因爲它們包含重疊的時間範圍:
John 2012-01-01 06:00:01.000 2012-01-01 18:00:02.000
行4
和5
將被合併,因爲從07:01:01.000
減去6小時落入的窗口行4
。
在包含大約一百萬行的大型表上進行此操作的方法是否有效?
我認爲你在anwer文本中有錯誤。當你說第一排變爲06:00:01.000 - 18:00:02.000不是03:00:01.000 - 18:00:02.000? (09:00 - 6h = 03:00而不是06:00) – danihp