私はこのようなテーブルがあります。ウィンドウ内で重複する時間をマージするにはどうすればよいですか?
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時間の窓の中で。 07:01:01.000
から6時間を差し引くことのウィンドウに落ちるため
John 2012-01-01 06:00:01.000 2012-01-01 18:00:02.000
行4
と5
がマージされます。これらは重複する時間範囲を含むしたがって、上記の表では、行1
と2
は、単一の行にマージされます行4
。
約100万行の大きなテーブルでこれを行う良い方法はありますか?
あなたはアンカーテキストに間違いがあると思います。行1が06:00:01.000 - 18:00:02.000になると言うとき、03:00:01.000 - 18:00:02.000? (09:00 - 6h = 03:00で06:00ではない) – danihp