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

为何查询返回2021年第53周数据?公历该年仅含52周

问题原因及解决方法

问题根源

你遇到的核心问题是公历年份与ISO周的年份归属不匹配:

  • ISO周的规则是每周从周一开始,且一年的第1周必须包含当年的第一个周四(即该周至少有4天属于当年)。
  • 2020年的第53周覆盖日期为2020年12月28日至2021年1月3日,其中2021年1月1日-3日的公历年份是2021,但它们的ISO周数仍为53,且对应的ISO年份是2020。
  • 你的查询用YEAR(DateTime)(公历年份)分组,把这三天的数据归到了2021年的分组下,同时搭配DATEPART(ISO_WEEK, DateTime)得到的53周数,最终导致2021年的结果里出现了第53周的数值。

解决方法

改用ISO标准的年份(DATEPART(ISO_YEAR, DateTime))来替代公历年份进行分组、筛选和字段输出,确保周数与年份的归属完全匹配。

修改后的SQL代码:

SELECT
    *
FROM (
    SELECT
        DATEPART(ISO_YEAR, DateTime) AS Year, -- 使用ISO年份而非公历年份
        'WEEK ' + RIGHT('0' + CONVERT(VARCHAR(2), DATEPART(ISO_WEEK,DateTime)), 2) AS Week,
        MAX(Value) - MIN(Value) AS Value
    FROM
        DummyData.dbo.SampleData
    WHERE
        TagName LIKE '%ENERGY_SAMPLE_1%' AND
        DATEPART(ISO_YEAR,DateTime) >= 2020 AND -- 筛选条件也改用ISO年份
        DATEPART(ISO_YEAR,DateTime) <= 2022
    GROUP BY
        DATEPART(ISO_YEAR, DateTime), -- 分组依据改为ISO年份
        DATEPART(ISO_WEEK,DateTime)

) AS SourceTable
PIVOT (
    SUM(Value)
    FOR Week IN (
        --[WEEK 01], [WEEK 02], [WEEK 03], [WEEK 04], [WEEK 05], [WEEK 06], [WEEK 07],
        --[WEEK 08], [WEEK 09], [WEEK 10], [WEEK 11], [WEEK 12], [WEEK 13], [WEEK 14],
        --[WEEK 15], [WEEK 16], [WEEK 17], [WEEK 18], [WEEK 19], [WEEK 20], [WEEK 21],
        --[WEEK 22], [WEEK 23], [WEEK 24], [WEEK 25], [WEEK 26], [WEEK 27], [WEEK 28],
        --[WEEK 29], [WEEK 30], [WEEK 31], [WEEK 32], [WEEK 33], [WEEK 34], [WEEK 35],
        --[WEEK 36], [WEEK 37], [WEEK 38], [WEEK 39], [WEEK 40], [WEEK 41], [WEEK 42],
        --[WEEK 43], [WEEK 44], [WEEK 45], [WEEK 46], [WEEK 47], [WEEK 48], [WEEK 49],
        [WEEK 50], [WEEK 51], [WEEK 52], 
        [WEEK 53]
    )
) AS PivotTable;

效果说明

修改后,2021年1月1-3日的数据会被正确归到2020年的第53周,2021年的分组结果里就不会出现第53周的数值,完全符合你预期的2021年仅有52周的规则。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:10:33