Объедините перекрывающиеся диапазоны дат в SQL Server - PullRequest
0 голосов
/ 10 августа 2011

У меня есть таблица с миллионами строк, которые требуют, чтобы интервалы дат с определенным «номером контракта» и «сервисным кодом» не перекрывались. Обычно есть 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)

Кроме того, я уже рассмотрел этот вопрос: Устранить и уменьшить перекрывающиеся диапазоны дат . Он работал в подмножестве данных, но он был очень медленным, когда я применил его ко всем имеющимся у меня данным. Мне нужно что-то, что работает за несколько минут для миллионов строк. Есть идеи?

1 Ответ

0 голосов
/ 10 августа 2011

Потратив много времени на решение таких проблем, я думаю, что более эффективно поддерживать чистоту данных без наложений, чем исключать их из большой таблицы.Ограничения позволяют нам делать это эффективно: Смежные периоды времени

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...