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
相关产品推荐
相关产品推荐

