SQL server中一个月每五天统计一次这五天所有数据总和除以天数最后不足五天的为一组,有知道不用存储过程怎末写吗?

img

日期是这种的一个月每五天统计一次这五天所有数据总和除以天数最后不足五天的为一组,求解决

用递归构造所有日期,用开窗函数取模分组

with cte as (select Convert(DateTime,'20211201',112) d
             union all
             select d+1 from cte where d+1<=Convert(DateTime,'20211231',112))
      select g ,min(d) date_from,max(d) date_to,sum(val) sum_val from (     
        select round(((row_number() over (order by cte.d))-1)/5,0,1) g,
             cte.d,isnull(val,0) val from cte left join 
        (select d ,sum(val) val from test_table group by d) a
             on cte.d=a.d) as t
group by g;

下面是实测截图

img