У меня есть набор диапазонов дат, состоящих как из частично, так и полностью перекрывающихся дат, например:
UserID StartDate EndDate
====== ========== ==========
1 2011-01-01 2011-01-02 <- A
1 2011-01-01 2011-01-10 <- A
1 2011-01-08 2011-02-15 <- A
1 2011-02-20 2011-03-10 <- B
2 2011-01-01 2011-01-20 <- C
2 2011-01-15 2011-01-25 <- C
Используя T-SQL, я хотел бы создать новый набор данных для каждого пользователя с исключенными перекрывающимися данными, расширением диапазонов и удалением избыточных данных, где это необходимо, что приведет к чему-то вроде этого:
UserID StartDate EndDate
====== ========== ==========
1 2011-01-01 2011-02-15 ('A', three rows combined, extending the range)
1 2011-02-20 2011-03-10 ('B', no change, no overlaps here)
2 2011-01-01 2011-01-25 ('C', two rows combined)
Курсоры хороши, если нужно, но если бы я мог обойтись без них, было бы еще лучше.