使用hive中的concat_ws,collect_set()列转行

建表

drop table if exists analyst.fiona_colunm_to_row;
CREATE TABLE IF NOT EXISTS analyst.fiona_colunm_to_row AS
SELECT
'c' as row_1,'d' as row_2,1 as row_3

批量插入数据:

insert into analyst.fiona_colunm_to_row values
('c','d',2),
('c','d',3),
('e','f',1),
('e','f',2),
('e','f',3),
('e','f',4)

得到表格如下:
在这里插入图片描述
现在想要得到:
在这里插入图片描述
可以使用如下代码:

SELECT row_1,
       row_2,
       concat_ws(',' , collect_set(cast(row_3 AS string))) AS colunm_to_row
FROM analyst.fiona_row_to_column
GROUP BY row_1,
         row_2;

其中:
collect_set作用有2个:
作用一:去重,去掉group by后面的重复元素
作用二:将group by后面属于同一组的第三列搞起来形成一个集合

concat_ws作用:
将collect_set形成的集合的每个元素之间添加逗号形成字符串

引用:https://blog.csdn.net/jsbylibo/article/details/82859168

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值