go
create function udf_WeekDay(@ int,@Date datetime)returns datetime-- 返回 @Date 映射到 所在周的其他天 周日是当周的最后一天begin/*--周日算作(上一)周的最后一天 当 @ <= 1 代表将 @Date 映射到 所在周的星期一 当 @ = 2 代表将 @Date 映射到 所在周的星期二 当 @ = 3 代表将 @Date 映射到 所在周的星期三 当 @ = 4 代表将 @Date 映射到 所在周的星期四 当 @ = 5 代表将 @Date 映射到 所在周的星期五 当 @ = 6 代表将 @Date 映射到 所在周的星期六 当 @ >= 7 代表将 @Date 映射到 所在周的星期日 可用于按周汇总 Group by,均支持跨年跨月数据*/return dateadd(day ,case when (@@Datefirst + datepart(weekday,@Date)) % 7 = 0 --周六 then case when @ between 1 and 6 then @ - 6 else