当前位置: 首页 > news >正文

postgresql行列转换函数

postgresql行列转换函数

Pg提供相关行列转换函数string_agg和regexp_split_to_table。

1、行转列:string_agg

测试表
postgres=# select * from test.test_copy ;
eno | ename | job | mgr | hiredate | sal | comm | deptno 
------+--------+----------+------+---------------------+------+------+--------
7499 | ALLEN | SALESMAN | 7698 | 1991-02-20 00:00:00 | 1600 | 300 | 30
7566 | JONES | MANAGER | 7839 | 1991-04-02 00:00:00 | 2975 | | 20
7654 | MARTIN | SALESMAN | 7698 | 1991-09-28 00:00:00 | 1250 | 1400 | 30
7498 | JASON | ENGINEER | 7724 | 1990-02-20 00:00:00 | 1600 | 300 | 10
(4 rows)
将部门为30的员工的姓名合并起来
postgres=# Select deptno,string_agg(ename,',') from test.test_copy group by deptno;
deptno | string_agg 
--------+--------------
30 | ALLEN,MARTIN
10 | JASON
20 | JONES
(3 rows)

2、列转行:regexp_split_to_table

postgres=# select * from test.test_str;
no | name 
----+------------
1 | a,b,c,d
2 | Jason Xian
(2 rows)
将列信息转换成行
postgres=# select regexp_split_to_table(name,',') from test.test_str where no=1;
regexp_split_to_table 
-----------------------
a
b
c
d
(4 rows)
postgres=# select regexp_split_to_table(name,' ') from test.test_str where no=2;
regexp_split_to_table 
-----------------------
Jason
Xian
(2 rows)
postgres=# select regexp_split_to_table('hello world', '\s+');
regexp_split_to_table 
-----------------------
hello
world
(2 rows)

相关文章:

  • SQL中IF和CASE语句
  • Python Day3
  • [20190416]完善shared latch测试脚本2.txt
  • Windows下如何更新 node.js
  • 美团数据调优指北【转载】
  • 如何给列表降维?sum()函数的妙用
  • 好程序员分享JQuery.get提交页面不跳转的解决方法
  • QT 栅格布局
  • 如何根据业务封装自己的功能组件
  • 心理学解析一见钟情的感觉
  • 深入理解nvme hardware queue pair
  • 家具建材行业电商平台解决方案
  • SAP soamanager发布的Webservice服务,调用时出现http500报错
  • 日常英语---九、冒险岛link技能导读
  • 日常英语---四、vis.js是什么
  • 《深入 React 技术栈》
  • Angularjs之国际化
  • DataBase in Android
  • Gradle 5.0 正式版发布
  • JAVA 学习IO流
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • springMvc学习笔记(2)
  • XML已死 ?
  • 电商搜索引擎的架构设计和性能优化
  • 老板让我十分钟上手nx-admin
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 前端性能优化——回流与重绘
  • 微信开源mars源码分析1—上层samples分析
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • !!Dom4j 学习笔记
  • $.each()与$(selector).each()
  • (13)Hive调优——动态分区导致的小文件问题
  • (20050108)又读《平凡的世界》
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (zt)最盛行的警世狂言(爆笑)
  • (三)Honghu Cloud云架构一定时调度平台
  • (实战篇)如何缓存数据
  • (转)EOS中账户、钱包和密钥的关系
  • .java 9 找不到符号_java找不到符号
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET 事件模型教程(二)
  • /boot 内存空间不够
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • @GlobalLock注解作用与原理解析
  • @PreAuthorize注解
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • [2019.3.5]BZOJ1934 [Shoi2007]Vote 善意的投票
  • [CISCN2021 Quals]upload(PNG-IDAT块嵌入马)
  • [Django 0-1] Core.Checks 模块
  • [ERROR]-Error: failure: repodata/filelists.xml.gz from addons: [Errno 256] No more mirrors to try.
  • [IE编程] WebBrowser控件中设置页面的缩放
  • [IT生活推荐]大家一起来玩游戏喽,来的都进!