从现有列转置 Hive SQL 数据

Posted

技术标签:

【中文标题】从现有列转置 Hive SQL 数据【英文标题】:Transpose Hive SQL data from existing column 【发布时间】:2018-03-12 18:12:14 【问题描述】:

我目前正在使用以下查询来获取以下结果

select 
  mt.name,
  mt.title,
  mt.type,
  mt.day1,
  mt.day2

from mytable mt

给我类似的结果

name       title      type      day1              day2
batman     super      gothom    12/22/1990        2/2/1990
batman     super      dc        1/9/1990          7/5/1990

新的选择应该根据类型创建新的列,并从特定列中获取数据“在这种情况下为 day2”我理想地希望我的结果看起来像

name       title      gothom          dc      
batman     super      2/2/1990        7/5/1990

我怎样才能实现上面想要的表格。

【问题讨论】:

你不想要第一天的信息。对吗? @Counter10000 是正确的 How to transpose/pivot data in hive?的可能重复 【参考方案1】:

在 Hive 中,您可以使用条件聚合来透视数据:

select mt.name, mt.title,
       max(case when type = 'gothom' then day2 end) as gothom,
       max(case when type = 'dc' then day2 end) as dc
from mytable mt
group by mt.name, mt.title;

【讨论】:

以上是关于从现有列转置 Hive SQL 数据的主要内容,如果未能解决你的问题,请参考以下文章

t-sql 将列转置为行

将列转置为行 SQL Server

将具有唯一值的列转置到行的 SQL 查询

如何从包含集合的 pandas 列转置和转换为“one-hot-encode”样式?

oracle sql 11G中如何将列转置为行

将多行数据列转置为一列