hive如何实现多行转多列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hive如何实现多行转多列相关的知识,希望对你有一定的参考价值。

问题:假设有张学生成绩表(tb)如下:
姓名 课程 分数
张三 语文 74
张三 数学 83
张三 物理 93
张三 德语 null
李四 语文 74
李四 数学 84
李四 物理 94
李四 英语 80

想变成(得到如下结果):

姓名 语文 数学 物理 英语 德语
---- ---- ---- ----
李四 74 84 94 ? 60
张三 74 83 93 80 ?
-------------------

参考技术A 先姓名groupby,用collect_set()得到课程分数二元组集合,然后一个个用if select出来

Oracle:多列转多行

我在查到的可以把这样的字符串'17,20,23' :select '17,20,23' from dual转变为多列,sql如下:
SELECT REGEXP_SUBSTR('17,20,23', '[^,]+', 1, LEVEL, 'i') AS STR
FROM DUAL
CONNECT BY LEVEL <=
LENGTH('17,20,23') - LENGTH(REGEXP_REPLACE('17,20,23', ',', ''))+1;
但是现在我想把 '17','20','23' :select '17','20','23' from dual转为多列,不要用union all ,因为 '17','20','23' 是一个整体,请问sql怎么写?

参考技术A SELECT '17', '20', '23' FROM DUAL UNPIVOT;
UNPIVOT 是oracle11g后提供的列转行函数

追问

不行啊,我要的结果是
17
20
23
你这条加不加unpivot 都是一样的,我的数据库是oracle11g的
或者能不能把'17','20','23' 转换为'17,20,23' ?这样我就能用上面我贴的sql查询了

以上是关于hive如何实现多行转多列的主要内容,如果未能解决你的问题,请参考以下文章

Day13:Hive优化及数据倾斜

Latex如何插入多个图片,实现并排排列或者多行多列排列

Latex如何插入多个图片,实现并排排列或者多行多列排列

Flink SQL 如何实现列转行 ?

Hive UDF 返回多列输出

安卓网格布局如何用java代码实现跨多行跨多列