You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何生成跨年度连续唯一的周一至周日周编号?

需求:生成跨年度不重置的周编号(周一为起始日)

需要从[Dates]列获取周编号,要求:

  • 以周一为一周起始日
  • 每个周具有唯一标识,跨年时不从52重置为1,而是继续计数(如54、55...)

补充说明:此需求是为了在Tableau中对[Week Date Range]列正确排序,否则Tableau会出现如下错误排序:

08/08/2022 - 08/14/2022
08/09/2021 - 08/15/2021
08/15/2022 - 08/21/2022
08/16/2021 - 08/22/2021

示例代码

CREATE TABLE Dates
(Id INT, Dates DATE);

INSERT INTO Dates
VALUES
(1, '2022-12-19'),
(2, '2022-12-22'),
(3, '2022-12-25'),
(4, '2022-12-26'),
(5, '2022-12-29'),
(6, '2022-12-31'),
(7, '2023-01-01'),
(8, '2023-01-06'),
(9, '2023-01-07'),
(10, '2023-01-09')


SELECT *,
       CONCAT(CONVERT(VARCHAR(10), DATEADD(DAY, DATEDIFF(DAY, '19000101', Dates) / 7 * 7, '19000101'), 101), ' - ', CONVERT(VARCHAR(10), DATEADD(DAY, (DATEDIFF(DAY, '19000101', Dates) / 7 + 1) * 7, '18991231'), 101)) AS [Week Date Range (Monday - Sunday)],       
       DATEPART(ISO_WEEK, Dates) AS [ISO Week Number]

FROM Dates

执行结果

IdDatesWeek Date Range (Monday - Sunday)ISO Week Number
12022-12-1912/19/2022 - 12/25/202251
22022-12-2212/19/2022 - 12/25/202251
32022-12-2512/19/2022 - 12/25/202251
42022-12-2612/26/2022 - 01/01/202352
52022-12-2912/26/2022 - 01/01/202352
62022-12-3112/26/2022 - 01/01/202352
72023-01-0112/26/2022 - 01/01/202352
82023-01-0601/02/2023 - 01/08/20231
92023-01-0701/02/2023 - 01/08/20231
102023-01-0901/09/2023 - 01/15/20232

内容的提问来源于stack exchange,提问作者Yara1994

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 22:20:26