如何在年度变化之间平均分配周数

时间:2015-08-18 21:42:46

标签: sql sql-server

该查询在生成周内工作正常,直至年度变化。正如您在年度变化中看到的生成输出(如下图所示),我得到了一个不同的模式。请帮忙。我希望平等分配7天。目前订单是订单不相等,您可以在输出28/12 / 2014,01 / 01/2015和04/01/2015中看到错误的顺序。同样,第一个差异不是7天而是6天(从2014年9月4日到2014年11月9日)。我希望这是7天,即(2014年9月3日至2014年11月9日)

3 个答案:

答案 0 :(得分:0)

尝试这样的事情。您希望几周开始哪一天?

.o

编辑:我想我明白你要对GROUP BY datediff(dd, ad.xDate, @MaxDate) / 7 CTE做些什么,但我无法弄清楚它是如何工作的。根据它看到的内容,它看起来重复了AllDates值,并删除了@MinDate之前的每个日期。我的期望是看到这样的事情应该照顾你额外的一天问题。我也猜测你的14周的周数会在一天内重叠。

@MaxDate

答案 1 :(得分:0)

您可以使用cte生成14周

这将生成一个表,其中包含7天递增的周数,无论开始日期如何,您可以使用该表对数据进行分类:

declare @startdate date
set @startdate = '2014-11-13'

;with cte (SOW,EOW,cnt) 
as
    (
    select @startdate as SOW,dateadd(dd,6,@startdate) as EOW, 1 as cnt
    union all
    select dateadd(dd,7,SOW),dateadd(dd,7,EOW),cnt+1
    from cte
    where cnt<14
    )
select * from cte

答案 2 :(得分:0)

解决方案是使用。查看here了解更多详情。

GROUP BY
DATEDIFF(week, 0, ad.xDate)

感谢MatBailie提供解决方案。