У меня есть таблица с миллионами строк, которые требуют, чтобы интервалы дат с определенным «номером контракта» и «сервисным кодом» не перекрывались. Обычно есть 2-4 строки с перекрывающимися датами, которые должны быть объединены в одну запись. Записи, которые не пересекаются, не должны объединяться, и пробелы должны сохраняться.
ContractNumber ServiceCode StartDate EndDate
1111111 AFL 2010-01-01 2010-12-31
1111111 AFL 2011-01-01 2011-12-31
1111111 AFL 2011-04-01 2012-03-31
1111111 AFL 2011-04-01 2012-06-30
1111111 AFL 2013-01-01 2013-12-31
Они должны быть объединены в:
ContractNumber ServiceCode StartDate EndDate
1111111 AFL 2010-01-01 2010-12-31 (remains the same)
1111111 AFL 2011-01-01 2012-06-30 (merged)
1111111 AFL 2013-01-01 2013-12-31 (gap maintained)
Кроме того, я уже рассмотрел этот вопрос: Устранить и уменьшить перекрывающиеся диапазоны дат . Он работал в подмножестве данных, но он был очень медленным, когда я применил его ко всем имеющимся у меня данным. Мне нужно что-то, что работает за несколько минут для миллионов строк. Есть идеи?