You can use a Numbers or Tally table (or a function that generates numbers) to create a row for each date then LEFT OUTER JOIN to your table. Like this:declare @stdt datetime ,@enddt datetimeselect @stdt = '2009-01-01' ,@enddt = '2009-07-01'select dateadd(day, nu.number, @stDt) ,count(o.id)from master..spt_values nu --Any Table of consecutive integersleft outer join sysobjects o --YourTable on o.crdate = dateadd(day, nu.number, @stDt)where nu.type = 'p'and nu.number <= datediff(day, @stDt, @endDt)group by dateadd(day, nu.number, @stDt)
Be One with the OptimizerTG