你可以另外做一张表,把每个日期得周区间先查询出来
然后在你原sql里面添加一列,用datepart(wk,[date]) as wknum把你的日期所在周数列出来,把这两个查询用year和wknum关联(left join)起来。
1、查询时就可以用开窗函数比如:
sum(某字段)over(partition by year,wknum) as 周区间汇总
2、根据时间段去获取它在哪个周并把该周的天数查询出来
count(1)over(partition by year,wknum) as 周天数
搞错了,直接添加一列datepart(wk,[date]) as wknum,然后count(1)over(partition by year,wknum) as 周天数 就可以了。
注意:set datefirst 1 ;-- 设置周1为第一天