SQL group by frequency within a date range

后端 未结 4 2042
攒了一身酷
攒了一身酷 2020-12-31 16:44

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

4条回答
  •  遥遥无期
    2020-12-31 17:40

     Create procedure MyProc
     @startDate DateTime,
     @endDate DateTime,
     @freq varChar(5)
     As
    
        If @freq = "day" 
            Select DateAdd(day, 0, datediff(day, 0, date)), Frequency,
            Sum(Count) 
            From Table
            Group By DateAdd(day, 0, datediff(day, 0, date))
        Else If @freq = "week" 
            Select DateAdd(week, 0, datediff(week, 0, date)), Frequency,
            Sum(Count) 
            From Table
            Group By DateAdd(week, 0, datediff(week, 0, date))
        Else If @freq = "Month" 
            Select DateAdd(Month, 0, datediff(Month, 0, date)), Frequency,
            Sum(Count) 
            From Table
            Group By DateAdd(Month, 0, datediff(Month, 0, date))
        Else If @freq = "Quarter" 
            Select DateAdd(Quarter, 0, datediff(Quarter, 0, date)), Frequency,
            Sum(Count) 
            From Table
            Group By DateAdd(Quarter, 0, datediff(Quarter, 0, date))
        Else If @freq = "Year" 
            Select DateAdd(Year, 0, datediff(Year, 0, date)), Frequency,
            Sum(Count) 
            From Table
            Group By DateAdd(Year, 0, datediff(Year, 0, date))
    

提交回复
热议问题