I have a requirement to write a stored procedure that accepts a start date, end date and a frequency (day, week, month, quarter, year) and outputs a result set based on thos
Something like this should work.
select date_column,
sum(count)
from @table
where date_column between @start_date and @end_date
group by case @frequency
when 'week' then datepart(week,date_column )
when 'year' then datepart(year,date_column)
when 'quarter' then datepart(quarter,date_column)
when ...
end;