当前位置:   article > 正文

hive:函数:collect_list和collect_set (行转列-多行转单行)_collect_set 分列

collect_set 分列

业务场景:

表一对表二是一对多的关系,现在需用表1去关联表2,但是要取表2的某条对应的最新的数据

表2格式为(同id查出多条):

select id,status from    os.os_aen_erp_comments  where recommendid =686871
  1. 1398221 加入项目
  2. 1398235 编写推荐报告
  3. 1398246 推给客户
  4. 1404211 预约初试
  5. 1404322 客户初试

 

使用collect_list函数进行行转列,将表2同一id的多行数据转为一行,然后再和表1进行关联。

select  recommendid,collect_list(status) status from    os.os_an_erp_comments  where recommendid =686871  group by recommendid

执行效果为:

686871	["加入项目","编写推荐报告","推给客户","预约初试","客户初试"]

 

 

注意这里是多行转成了一个Array,可以对Array相应的取值:

select  recommendid,collect_list(status)[1] status from    os.os_aen_erp_comments  where recommendid =686871  group by recommendid 
686871	编写推荐报告

注意:我这里是取最新的一条数据,所以应该以时间字段或id字段排序再取值

  1. select recommendid,collect_list(status)[0] status from (select * from os.os_ain_erp_comments order by id asc ) t where recommendid =686871 group by recommendid
  2. 执行结果:686871 加入项目

collect_set 同 collect_list,只是做了去重。

使用concat_ws实现 array转string:

https://blog.csdn.net/weixin_38750084/article/details/107710916

 

 

参考:https://www.cnblogs.com/cc11001100/p/9043946.html

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/434710
推荐阅读
相关标签
  

闽ICP备14008679号