c r e a t e table mike1 ( ... personid int, begindate datetime, enddate datetime... )(ok so perhaps c reate is no longer a good word to use, maybe the anti-religous folks around here have undo influence on the UT *bg*)
c reate table #dave1 ( adate datetime ) insert into #dave1 values ( '1/1/2006' ) insert into #dave1 values ( '1/2/2006' ) insert into #dave1 values ( '1/3/2006' ) insert into #dave1 values ( '1/4/2006' ) insert into #dave1 values ( '1/5/2006' ) insert into #dave1 values ( '1/6/2006' ) insert into #dave1 values ( '1/7/2006' ) insert into #dave1 values ( '1/8/2006' ) insert into #dave1 values ( '1/9/2006' ) insert into #dave1 values ( '1/10/2006' ) insert into #dave1 values ( '1/11/2006' ) insert into #dave1 values ( '1/12/2006' ) insert into #dave1 values ( '1/13/2006' ) c reate table #dave2 ( personid int, begindate datetime, enddate datetime ) insert into #dave2 values ( 1, '1/3/2006', '1/9/2006' ) insert into #dave2 values ( 2, '1/5/2006', '1/7/2006' ) -- just look to see whati it does select #dave1.adate, #dave2.personid from #dave1 inner join #dave2 on ( #dave1.adate between #dave2.begindate and #dave2.enddate ) order by #dave1.adate, personid -- real final summary result you want select #dave1.adate, count(#dave2.personid) as cnt from #dave1 inner join #dave2 on ( #dave1.adate between #dave2.begindate and #dave2.enddate ) group by #dave1.adate order by #dave1.adate