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

Oracle按日期字段合并多行数据的SQL查询实现方法

Oracle按日期合并行(行转列)实现方案

方案1:使用PIVOT函数(Oracle 11g及以上版本适用)

这是Oracle官方提供的行转列专用函数,语法更简洁:

SELECT *
FROM (
    -- 内层查询取出需要用到的三个核心字段:日期、指标类型、指标数值
    SELECT 日期字段, 指标类型字段, 指标数值字段
    FROM 你的表名
)
PIVOT (
    -- 聚合函数,同一日期同一指标只有1条数据时MAX/MIN/AVG效果一致,多值可根据需求改SUM/COUNT
    MAX(指标数值字段)
    -- 枚举所有需要转成列的指标值,别名可自定义
    FOR 指标类型字段 IN ('出勤' AS 出勤, '请假' AS 请假, '旷工' AS 旷工)
)
ORDER BY 日期字段;

方案2:CASE+聚合函数(全Oracle版本兼容)

如果使用的是11g以下的旧版本Oracle,可以用通用写法实现:

SELECT 
    日期字段,
    MAX(CASE WHEN 指标类型字段 = '出勤' THEN 指标数值字段 END) AS 出勤,
    MAX(CASE WHEN 指标类型字段 = '请假' THEN 指标数值字段 END) AS 请假,
    MAX(CASE WHEN 指标类型字段 = '旷工' THEN 指标数值字段 END) AS 旷工
FROM 你的表名
GROUP BY 日期字段
ORDER BY 日期字段;

注意事项

  • 请将语句中的你的表名、日期字段、指标类型字段、指标数值字段替换为你实际表的对应字段名
  • IN子句里的指标枚举值需要和你实际业务里的类型值完全匹配,有多少种指标就加多少条对应规则
  • 如果同一日期同一类型存在多条数据,可根据业务需求调整聚合函数,比如需要统计总和就把MAX改为SUM即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:30:04