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

Hive中单列数据转多列:设备控制器版本转行实现求助

解决Hive中设备双控制器版本行转列问题

你的问题核心是行转列:原SQL只是逐行做了条件判断,但没有对同一device_id的多条记录进行聚合,所以每个控制器的版本会单独占一行,另一列自然显示NULL。

要把同一设备的两个控制器版本合并到一行,你需要用GROUP BY结合聚合函数(比如MAX()或MIN())来“收拢”同一设备的记录,过滤掉NULL值:

SELECT 
    device_id,
    MAX(CASE WHEN controller_id = '1' THEN versions END) AS 1st_ctrl_id_ver,
    MAX(CASE WHEN controller_id = '2' THEN versions END) AS 2nd_ctrl_id_ver
FROM device_versions
GROUP BY device_id;

为什么这样可行?

  • GROUP BY device_id会把同一设备的所有记录归为一组;
  • MAX()函数会忽略NULL值,只保留每组中对应控制器ID的有效版本号(因为每个设备对每个控制器ID最多只有一条记录,所以MAX和MIN效果完全一致);
  • 最终每组会输出一行,正好是你想要的格式:同一设备的两个控制器版本在同一行,没有多余的NULL行。

执行这段SQL后,你会得到预期的输出:

device_id 1st_ctrl_id_ver 2nd_ctrl_id_ver
123       0.1             0.15
456       NULL            0.25
143       0.35            0.36

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:16:26