Create table #Input(LocationName varchar(20), ContactName varchar(20), AppointmentDate date)Insert into #Inputvalues('Business1', 'C1', '11/12/2012'),('Business1', 'C1', '11/13/2012'),('Business1', 'C1', '11/14/2012'),('Business1', 'C1', '11/15/2012'), ('Business1', 'C1', '12/15/2012'), ('Business1', 'C1', '12/16/2012'), ('Business1', 'C2', '11/15/2012'), ('Business2', 'C2', '12/16/2012'), ('Business2', 'C2', '12/17/2012'), ('Business2', 'C2', '01/17/2013'),('Business2', 'C3', '12/16/2012'), ('Business3', 'C3', '12/16/2012'),('Business3', 'C3', '01/18/2012'), ('Business3', 'C3', '01/19/2012')
select LocationName,ContactName,CASE CAST (MIN(AppointmentDate) as VARCHAR(16))WHEN CAST (MAX(AppointmentDate) as VARCHAR(16)) THEN CAST (MIN(AppointmentDate) as VARCHAR(16))ELSE CAST (MIN(AppointmentDate) as VARCHAR(16))+' TO '+CAST (MAX(AppointmentDate) as varchar(16)) end AppointmentDatefrom #Inputgroup by LocationName,ContactName, YEAR(AppointmentDate),MONTH(AppointmentDate)
Create table #Input(LocationName varchar(20), ContactName varchar(20), AppointmentDate date)Insert into #Inputvalues('Business1', 'C1', '11/12/2012'),('Business1', 'C1', '11/13/2012'),('Business1', 'C1', '11/14/2012'),('Business1', 'C1', '11/15/2012'), ('Business1', 'C1', '12/15/2012'), ('Business1', 'C1', '12/16/2012'), ('Business1', 'C2', '11/15/2012'), ('Business2', 'C2', '12/16/2012'), ('Business2', 'C2', '12/17/2012'), ('Business2', 'C2', '01/17/2013'),('Business2', 'C3', '12/16/2012'), ('Business3', 'C3', '12/16/2012'),('Business3', 'C3', '01/18/2012'), ('Business3', 'C3', '01/19/2012')gowith BaseData as (select LocationName, ContactName, AppointmentDate, rn = row_number() over (partition by LocationName, ContactName order by AppointmentDate)from #Input), GroupData as (select LocationName, ContactName, AppointmentDate, GroupDate = dateadd(dd, -rn, AppointmentDate)from BaseData)select LocationName, ContactName, AppointmentDate = convert(varchar(24),min(AppointmentDate), 107) + isnull(' to ' + convert(varchar(24),nullif(max(AppointmentDate),min(AppointmentDate)), 107),'')from GroupDatagroup by LocationNAme, ContactName, GroupDate;godrop table #Input;go
Create table #Input(LocationName varchar(20), ContactName varchar(20), AppointmentDate date)Insert into #Inputvalues('Business1', 'C1', '11/12/2012'),('Business1', 'C1', '11/13/2012'),('Business1', 'C1', '11/14/2012'),('Business1', 'C1', '11/16/2012'), -- ('Business1', 'C1', '11/15/2012') <<-- Old set of value('Business1', 'C1', '12/15/2012'), ('Business1', 'C1', '12/16/2012'), ('Business1', 'C2', '11/15/2012'), ('Business2', 'C2', '12/16/2012'), ('Business2', 'C2', '12/17/2012'), ('Business2', 'C2', '01/17/2013'),('Business2', 'C3', '12/16/2012'), ('Business3', 'C3', '12/16/2012'),('Business3', 'C3', '01/18/2012'), ('Business3', 'C3', '01/19/2012')