在日常取数或者数据处理中,我们会遇到需要把一列变多行的数据拆分操作,或者是需要把多行变一列的合并操作,接下来,就总结下在sql中通过lateral view explode()和concat_ws()/collect_set()的处理方法。

一列变多行lateral view explode()

假设有这样一个 表1(table_1)

id tag
43fjkdlj tag1|tag2|tag6
757jhidf tag3|tag5
863hskdh tag1|tag9|tag10|tag11

从表中可以看出一个id对应的tag标签有多个,想要把它拆分开,变成以下 表2(table_2)

id tag
43fjkdlj tag1
43fjkdlj tag2
43fjkdlj tag6
757jhidf tag3
757jhidf tag5
863hskdh tag1
863hskdh tag9
863hskdh tag10
863hskdh tag11

那么就可以使用lateral view explode()实现:

select id,tag_1
from   table_1 lateral view explode(split(tag,'\\|'))tag as tag_1

上述语句中explode()里可以说明分隔符是什么,对于"|"注意转义符,所以是“\\|”

多行变一列concat_ws()/collect_set()

但如果是上述表2要转换成表1的格式,就需要做合并操作,实现如下:

select id,concat_ws('\\|',collect_set(tag)) as tag
from table_2
group by id

concat_ws()可以根据指定连接符,上述语句也可以使用“-”连接,看自己需要和方便极客,要强调的是合并操作使用collect_set(),最后,不要忘记group by哦!

好了,就到这里吧,有问题欢迎大家留言评论~

sql中的列变行、行变列操作相关推荐

  1. 张同学的 SQL中对材料报价单的数据权限进行操作 (如列转行 行转列的处理) 学习一下....

    SQL中对材料报价单的数据权限进行操作 (如列转行 行转列的处理) --可以直接放到查询分析器执行 --判断测试表TmpTCIQuote是否有存在 不存在则创建 if NOT exists (sele ...

  2. Sql中存储过程的定义、修改和删除操作

    Sql中存储过程的定义.修改和删除操作 1.存储过程的分类 系统存储过程 本地存储过程(用户自定义) 临时存储过程(局部[#].全局[##]临时存储过程) 2.创建存储过程 ? 1 2 3 4 5 6 ...

  3. Hive SQL中的concat、concat_ws、concat_group列转行,行转列

    目录 1.concat函数,concat_ws函数,concat_group函数 CONCAT() 函数 2.CONCAT_WS(SEPARATOR ,collect_set(column)) 等价于 ...

  4. 利用SQL中的递归返回多行数据的连接

    有个数据表testC,数据为 col                                                ---------------------------------- ...

  5. oracle逗号隔开行转列_oralce逗号分割变多行 Oracle中REGEXP_SUBSTR函数

    Oracle中REGEXP_SUBSTR函数 Oracle 中REGEXP_SUBSTR函数的使用说明: 题目如下:在 oracle 中,使用一条语句实现将'17,20,23'拆分成'17','20' ...

  6. Hive SQL 中ARRAY或MAP类型数据处理:lateral view explode()/posexplode()——行转列函数

    前言:在对表数据进行批量处理过程中,常常碰上某个字段是一个array或者map形式的字段,一列数据的该字段信息同时存在多个值,当我们需要取出该数组中的每一个值实现一一对应关系的时候,可以考虑使用lat ...

  7. SQL中的行转列和列转行

    导读 SQL是IT行业很多岗位都要求具备的一项能力,对于数据岗位而言更是如此,甚至说扎实的SQL基础也往往是入职这些岗位的必备技能.而在SQL面试中,一道出镜频率很高的题目就是行转列和列转行的问题,可 ...

  8. oracle逗号隔开行转列_oralce逗号分割变多行-Oracle

    oralce逗号分割变多行 方法一 select  a.*  , REGEXP_SUBSTR(a.rolecode ,'[^,]+',1,l) AS rolecode from p_user a,(S ...

  9. Excel如何将表转换为另一种格式的表(表1转换为表2),表转换的绿色工具,支持一行变多行,多行变一行,行变列,列边行等等

    将表格式转换的 Excel在线绿色工具 支持一行变多行,多行变一行,行变列,列边行等等 Excel如何把一个表格快速转化成想要的另一个格式,使用下面的工具 (注意要使用谷歌浏览器) 地址:www.ex ...

最新文章

  1. 五角大楼公布UFO报告,不明飞行物到底是什么?(全文)
  2. 工厂三兄弟之简单工厂模式(二)
  3. 在Ubuntu 14.04中使SublimeText 3支持中文输入法
  4. C#3.0 Sepcification(中英文对照) (转)
  5. centos安装redis并客户端连接_Linux(Centos)之安装Redis及注意事项
  6. 自定义控件--CircleImageView(类似于QQ、微信圆形头像自定义控件)
  7. Struts2.0 + Spring2.5 + Hibernate3.3开发环境的配置(1)
  8. python实现QQ机器人(自动登录,获取群消息,发送群消息)
  9. U盘文件夹被隐藏,如何让去除文件夹隐藏属性
  10. 芯片验证漫游指南_【福利】海思校招数字芯片机考参考资料
  11. pandas 常见写法
  12. centos7下显卡型号查询
  13. 推荐几个练习键盘打字的工具【自己用过的】
  14. 输入年和月,判断该月有多少天
  15. Invalid HTTP_HOST header: ‘testserver‘. You may need to add ‘testserver‘ to ALLOWED_HOSTS
  16. 工具-安装redis和安装redis客户端
  17. 信息安全的马其顿防线
  18. 那些年啊,那些事——一个程序员的奋斗史 ——114
  19. TUI轻松实现中国农历日历
  20. gfoj 22的应急救援

热门文章

  1. 早期递归神经网络初探
  2. Python四个整数排序
  3. 有1、2、3、4四个数字,能组成多少个互不相同且一个数字中无重复数字的三位数?
  4. 树莓派PICO+freeRTOS
  5. 轻松玩转树莓派Pico之二、创建自己的pico工程项目
  6. 访问者用语音命令控制你的网站。
  7. PTA 习题3-5 三角形判断 (15分)
  8. 计算机毕业设计之交通违章管理系统
  9. 内容付费时代的创业者该做什么?
  10. 1.7.2服务器修改器,关于S7修改器V1.72的问题