Разделение пересечения диапазона дат в SQL
У меня есть база данных SQL Server 2005, которая содержит таблицу под названием Memberships.
Схема таблицы:
PersonID int, Surname nvarchar(30), FirstName nvarchar(30), Description nvarchar(100), StartDate datetime, EndDate datetime
В настоящее время я работаю над функцией сетки, которая показывает распределение членства по лицам. Одним из требований является разделение строк членства там, где есть пересечение диапазонов дат. Пересечение должно быть связано с Фамилией и FirstName, то есть разделение происходит только с записями членства с одинаковыми Фамилией и FirstName.
Пример таблицы данных:
18 Smith John Poker Club 01/01/2009 NULL 18 Smith John Library 05/01/2009 18/01/2009 18 Smith John Gym 10/01/2009 28/01/2009 26 Adams Jane Pilates 03/01/2009 16/02/2009
Ожидаемый набор результатов:
18 Smith John Poker Club 01/01/2009 04/01/2009 18 Smith John Poker Club / Library 05/01/2009 09/01/2009 18 Smith John Poker Club / Library / Gym 10/01/2009 18/01/2009 18 Smith John Poker Club / Gym 19/01/2009 28/01/2009 18 Smith John Poker Club 29/01/2009 NULL 26 Adams Jane Pilates 03/01/2009 16/02/2009
Кто-нибудь знает, как я мог бы написать хранимую процедуру, которая будет возвращать набор результатов, который имеет разбивку, описанную выше.