将周附加到滚动日期列

问题描述

我有一个每日滚动日期列,[table].[Date],从 2020-06-27 到今天。

我需要附加一个周数,2020-06-27 到 2020-07-03 作为第 1 周,依此类推。周六至周五定义为一周。

我尝试了以下方法。虽然这仅定义了一年中的一周,所以当一年过去时,我最终会出现重叠。此外,它没有将第一个日期定义为第 1 周。

datepart(week,[table].[Date]) as Week

解决方法

据推测,您正在使用 SQL Server(基于 SSMS 标记)。

您可以计算天数并除以 7:

select ceiling(datediff(day,'2020-06-26',t.date) / 7.0) as week_number

或者:

选择 1 + floor(datediff(day,'2020-06-27',t.date) / 7.0) 作为 week_number

如果不想硬编码第一个日期,可以使用窗口函数:

select ceiling(datediff(day,min(t.date) over (),t.date) / 7.0) as week_number