В текущую таблицу добавляете поле-флаг для отметки просмотренных интервалов.
Создаёте вторую таблицу, куда будут писаться суммированные интервалы.
Дальше примерно так:
Выбираете первую немаркированную запись из таблицы, её границы используете как in и out.
Находите min_in и max_out всех записей, пересекающихся с текущей.
Eсли min_in != in или max_out != out, то in := min_in, out := max_out и повторяете предыдущий шаг.
Заносите полученный интервал в таблицу результатов.
Маркируете все записи в исходной таблице, пересекающиеся с полученной.
Повторяете алгоритм.