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

Hive SQL无Pivot函数时实现表转置的方法咨询

解决Hive中行转列(无Pivot函数)的问题

嘿,这个需求我太熟悉了!Hive确实没有像MySQL、SQL Server那样的原生PIVOT函数,但咱们用条件聚合的方法就能完美实现你要的行转列效果。

核心思路

利用CASE WHEN判断每行的question值,把对应的value映射到目标列上,再通过GROUP BY id把同一id的所有行聚合为一行。这里用MAX()(或MIN())是因为每个id+question的组合只有唯一值,聚合函数只是用来把分散的结果合并到同一行而已。

具体SQL代码

假设你的原表名为original_table,执行下面的语句就能得到你想要的结果:

SELECT
  id,
  MAX(CASE WHEN question = 'Name?' THEN value END) AS name,
  MAX(CASE WHEN question = 'City?' THEN value END) AS city,
  MAX(CASE WHEN question = 'Country?' THEN value END) AS country
FROM original_table
GROUP BY id;

补充说明

  • 如果你的question字段有更多不同取值,只要在SELECT里继续添加对应的CASE WHEN语句就行。
  • 如果存在同一个id+question有多条记录的情况,MAX()会保留最大的value,你可以根据实际需求换成SUM()、COLLECT_LIST()等聚合函数来处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:44:22