首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >hive中的简易表格转置

hive中的简易表格转置
EN

Stack Overflow用户
提问于 2019-02-05 20:24:50
回答 3查看 53关注 0票数 1

我需要把我的桌子换一下。现在我有了这种类型的表:

代码语言:javascript
运行
复制
Atr_1|Atr_2
 A   | 1
 A   | 2

但是我想得到下一个结果

代码语言:javascript
运行
复制
Atr_1|Atr_2|Atr_3
 A   | 1   |  2

为了达到这个结果,我应该如何转置我的表?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-02-05 21:13:46

使用min()max()聚合的用例语句:

代码语言:javascript
运行
复制
select Atr_1,
       max(case when Atr_2=1 then 1 end ) Attr_2,
       max(case when Atr_2=2 then 2 end ) Attr_3
  from table t
 group by Atr_1;
票数 1
EN

Stack Overflow用户

发布于 2019-02-05 20:26:31

如果您只有两个值,则min()max()可以执行您想要的操作:

代码语言:javascript
运行
复制
select atr_1, min(atr_2) as atr_2, max(atr_3) as atr_3
from t
group by atr_1;
票数 1
EN

Stack Overflow用户

发布于 2019-02-05 20:28:33

我认为您需要聚合:

代码语言:javascript
运行
复制
SELECT atr_1, 
       MAX(CASE WHEN SEQ = 1 THEN atr_2 END) as atr_2,
       MAX(CASE WHEN SEQ = 2 THEN atr_2 END) as atr_3
FROM (SELECT t.*,
             ROW_NUMBER() OVER (PARTITION BY atr_1 ORDER BY atr_2) AS SEQ
      FROM table t
     ) t
GROUP BY atr_1;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54534388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档