赞
踩
业务场景:
表一对表二是一对多的关系,现在需用表1去关联表2,但是要取表2的某条对应的最新的数据
表2格式为(同id查出多条):
select id,status from os.os_aen_erp_comments where recommendid =686871
- 1398221 加入项目
- 1398235 编写推荐报告
- 1398246 推给客户
- 1404211 预约初试
- 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字段排序再取值
- 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
-
- 执行结果: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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。