我有以下间隔数据。柱 Start
以及 End
. Start
总是少一点 End
. 间隔可以重叠:
Start | End
------------+------------
0 | 209
1295 | 1569
2344 | 2509
207 | 858
1226 | 1277
1283 | 1285
1572 | 2338
1502 | 3071
我需要合并间隔和输出在同一格式
Start | End
------------+------------
0 | 858
1295 | 3071
1226 | 1277
1283 | 1285
初始化代码:
CREATE TABLE Periods
(
[Start] int NOT NULL,
[End] int NOT NULL
)
INSERT INTO Periods ([Start], [End])
SELECT 0, 209
UNION ALL SELECT 1295, 1569
UNION ALL SELECT 2344, 2509
UNION ALL SELECT 207, 858
UNION ALL SELECT 1226,1277
UNION ALL SELECT 1283, 1285
UNION ALL SELECT 1572, 2338
UNION ALL SELECT 1502, 3071
1条答案
按热度按时间eqqqjvef1#
这是可以重叠的间隙和孤岛的一般形式。
您可以使用累积最大值来获取前一个端点,然后使用该信息来计算“孤岛”起点。剩下的只是聚合:
这是一把小提琴。