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

如何在Oracle中将多行数据进行行转列处理

解决方案:将行转固定列的SQL实现

原数据表

dateuseridcount
11MAR23a1101024
11MAR23a120510
11MAR23a140788
11MAR23a220300
12MAR23a130400

期望结果表

dateuserid10id20id30id40
11MAR23a11024510788
11MAR23a2300
12MAR23a1400

解决方法:条件聚合

你之前用分区(partitioning)的问题在于,开窗函数仅给每行添加计算结果,不会合并行。要实现行转固定列并合并同一date+user的行,需要用GROUP BY结合条件聚合:

SELECT
    date,
    user,
    MAX(CASE WHEN id = 10 THEN count END) AS id10,
    MAX(CASE WHEN id = 20 THEN count END) AS id20,
    MAX(CASE WHEN id = 30 THEN count END) AS id30,
    MAX(CASE WHEN id = 40 THEN count END) AS id40
FROM
    your_table_name
GROUP BY
    date,
    user
ORDER BY
    date,
    user;

原理说明

  • GROUP BY date, user:将相同日期和用户的行合并为一行
  • MAX(CASE ...):对每个目标id值,筛选出对应的count;由于每个date+user+id组合仅对应一个count值,MAX会自动忽略空值,保留唯一有效数值
  • 目标列固定,直接为每个预设id编写对应的CASE语句即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:35:18