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

SQL Server 2014 实现小时级聚合宽表转置为逐行时间-数值结构

实现方案

该需求在SQL Server 2014环境下完全可实现,不需要修改你原有的多表关联、聚合逻辑,只需要在原有查询结果的外层增加行转列操作即可,以下是两种常用的实现方式:

前置说明

先假设你原有宽表查询的输出结构如下(你可以根据自己实际的列名调整对应字段):

  • 日期列名:stat_date,类型为DATE,存储当天日期
  • 小时统计列:h0、h1、h2……h23,共24列,分别对应0点至23点的小时统计值

你可以将原有生成宽表的SQL作为子查询或者CTE(公用表表达式)嵌套在转置逻辑中即可。如果你的stat_date本身是DATETIME类型且默认时间为00:00:00,后续拼接完整时间时可省略CAST类型转换步骤。

方案1:使用UNPIVOT操作符实现

UNPIVOT是SQL Server专门用于宽表转长表的内置操作符,实现逻辑简洁:

WITH wide_result AS (
    -- 此处替换为你原有生成宽表的完整SQL查询
    SELECT 
        stat_date,
        h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11,
        h12, h13, h14, h15, h16, h17, h18, h19, h20, h21, h22, h23
    FROM 你的原有多表关联聚合逻辑
)
SELECT
    -- 拼接日期和小时为完整datetime
    DATEADD(HOUR, CAST(RIGHT(hour_col, 2) AS INT), CAST(stat_date AS DATETIME)) AS full_datetime,
    stat_value
FROM wide_result
UNPIVOT (
    stat_value FOR hour_col IN (
        h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11,
        h12, h13, h14, h15, h16, h17, h18, h19, h20, h21, h22, h23
    )
) AS unpivot_result

UNPIVOT会把你指定的24个小时列转为行,生成hour_col(存储原来的列名,比如h0、h1)和stat_value(存储对应列的统计值)两个字段,再通过DATEADD拼接成完整的时间即可。

方案2:使用VALUES表值构造函数实现

如果你的小时列名不是标准的h+数字格式,或者需要更灵活的自定义逻辑,可以用VALUES子句手动构造行映射,兼容性和灵活度更高:

WITH wide_result AS (
    -- 此处替换为你原有生成宽表的完整SQL查询
    SELECT 
        stat_date,
        h0, h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11,
        h12, h13, h14, h15, h16, h17, h18, h19, h20, h21, h22, h23
    FROM 你的原有多表关联聚合逻辑
)
SELECT
    DATEADD(HOUR, t.hour_offset, CAST(w.stat_date AS DATETIME)) AS full_datetime,
    t.stat_value
FROM wide_result w
CROSS APPLY (
    VALUES
        (0, h0), (1, h1), (2, h2), (3, h3), (4, h4), (5, h5), (6, h6), (7, h7),
        (8, h8), (9, h9), (10, h10), (11, h11), (12, h12), (13, h13), (14, h14), (15, h15),
        (16, h16), (17, h17), (18, h18), (19, h19), (20, h20), (21, h21), (22, h22), (23, h23)
) AS t(hour_offset, stat_value)

CROSS APPLY配合VALUES会为每一行宽表数据生成24行对应小时的记录,直接映射小时偏移量和对应的统计值,不需要额外解析列名,执行效率也更高。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:15:03