用SQLServer模拟测试了一下,大概效果如图,能获取到年度的周,替换字段后group by即可。
SELECT
'2022-03-01' AS "日期字段",
datepart ( wk, '2022-03-01' ) AS "默认一年内的第几周", -- 此时获取的是默认的第几周
datepart ( wk, DATEADD ( dd, -2, '2022-03-01' )) AS "处理后一年内的第几周", --默认是从周日开始计算,如果是周二则往前推两天,算到周日起始
datepart ( weekday, DATEADD ( dd,- 1, '2022-03-01' ) ) AS "星期几" -- 函数是以周日为星期起始,所以减去一天得到正常的范围