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

如何将多行数据Pivot到已有列,实现单用户单行展示?

问题描述

现有如下多行数据:

idusermanager_idmanager_namehierarchylevel_1level_2level_3level_4
100A30peter1briannullnullnull
100Anullnull2nullkobynullnull
100Anullnull3nullnullpeternull
200B20koby1nullbriannullnull
200Bnullnull2peternullnullnull
200Bnullnull3nullnullkobynull
300C10brian1peternullnullnull
300Cnullnull2nullkobynullnull
300Cnullnull3nullnullbriannull

需要将这些数据透视合并,实现每个用户仅保留一行,得到如下结果:

idusermanager_idmanager_namehierarchylevel_1level_2level_3level_4
100A30peter4briankobypeternull
200B20koby4peterbriankobynull
300C10brian4peterkobybriannull

注:每个用户的每个level仅对应一个值。

解决方案

利用分组聚合即可实现需求,因为每个分组(按id和user)内的各字段仅存在一个非null值,使用聚合函数可以自动忽略null并提取有效数据:

SELECT
    id,
    user,
    MAX(manager_id) AS manager_id,
    MAX(manager_name) AS manager_name,
    4 AS hierarchy,
    MAX(level_1) AS level_1,
    MAX(level_2) AS level_2,
    MAX(level_3) AS level_3,
    MAX(level_4) AS level_4
FROM your_table_name
GROUP BY id, user;

逻辑说明:

  1. 分组依据:按id和user分组,确保每个用户对应唯一分组;
  2. 聚合字段:MAX()函数会忽略null值,提取分组内唯一的非null数据,适用于manager_id、manager_name及所有level_*字段;
  3. 固定字段:hierarchy统一设为4,直接赋值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:10:25