我的编程空间,编程开发者的网络收藏夹
学习永远不晚

postgresql行转列与列转行图文教程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

postgresql行转列与列转行图文教程

列转行

PostgreSQL列转行的思路主要是利用string_to_array进行数组转换,然后用unnest进行行拆分

postgresql行转列与列转行图文教程

select t.bid_unit,unit_id from unit t
where t.unit_id=1947;
result=> 中国信息通信研究院;北京市海淀区学院
-- by zhengkai.blog.csdn.net

postgresql行转列与列转行图文教程

select unnest(string_to_array(t.bid_unit,';')),unit_id from unit t
where t.unit_id=1947;
result=> 
中国信息通信研究院
北京市海淀区学院
-- by zhengkai.blog.csdn.net

pgsql官方对functions-array的解释

FunctionReturn TypeDescriptionExampleResult
string_to_array(text, text [, text])text[]splits string into array elements using supplied delimiter and optional null string (使用提供的分隔符和可选的空字符串将字符串分割为数组元素)string_to_array(‘xx^yy^zz’, ‘^’, ‘yy’){xx,NULL,zz}
unnest(anyarray)setof anyelementexpand an array to a set of rows(将数组展开到一组行)unnest(ARRAY[1,2])1 2 (2 rows)

行转列

用postgresql的crosstab交叉函数

-- by zhengkai.blog.csdn.net
create table sales(year int, month int, qty int);
insert into sales values(2022, 1, 1000);
insert into sales values(2022, 2, 1500);
insert into sales values(2022, 7, 500);
insert into sales values(2022, 11, 1500);
insert into sales values(2022, 12, 2000);
insert into sales values(2023, 1, 1200);

select * from crosstab(
  'select year, month, qty from sales order by 1',
  'select m from generate_series(1,12) m'
) as (
  year int,
  "Jan" int,
  "Feb" int,
  "Mar" int,
  "Apr" int,
  "May" int,
  "Jun" int,
  "Jul" int,
  "Aug" int,
  "Sep" int,
  "Oct" int,
  "Nov" int,
  "Dec" int
);
 year | Jan  | Feb  | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov  | Dec
------+------+------+-----+-----+-----+-----+-----+-----+-----+-----+------+------
 2022 | 1000 | 1500 |     |     |     |     | 500 |     |     |     | 1500 | 2000
 2023 | 1200 |      |     |     |     |     |     |     |     |     |      |
(2 rows)

可以参考pgsql官方的tablefunc实用说明

FunctionReturnsDescription
normal_rand(int numvals, float8 mean, float8 stddev)setof float8Produces a set of normally distributed random values(产生一组正态分布的随机值)
crosstab(text sql)setof recordProduces a “pivot table” containing row names plus N value columns, where N is determined by the row type specified in the calling query(生成一个包含行名和N个值列的“数据透视表”,其中N个由调用查询中指定的行类型决定)
crosstabN(text sql)setof table_crosstab_NProduces a “pivot table” containing row names plus N value columns. crosstab2, crosstab3, and crosstab4 are predefined, but you can create additional crosstabN functions as described below(生成一个包含行名和N个值列的“数据透视表”。交叉表2、交叉表3和交叉表4都是预定义的,但是您可以创建额外的跨表n函数,如下面所述)
crosstab(text source_sql, text category_sql)setof recordProduces a “pivot table” with the value columns specified by a second query(生成具有由第二个查询指定的值列的“数据透视表”)
crosstab(text sql, int N)setof recordObsolete version of crosstab(text). The parameter N is now ignored, since the number of value columns is always determined by the calling query(过时版本的交叉表(文本)。参数N现在被忽略,因为值列的数量总是由调用查询决定)
connectby(text relname, text keyid_fld, text parent_keyid_fld [, text orderby_fld ], text start_with, int max_depth [, text branch_delim ])setof recordProduces a representation of a hierarchical tree structure(生成层次树结构的表示)

总结

到此这篇关于postgresql行转列与列转行的文章就介绍到这了,更多相关postgresql行转列 列转行内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

postgresql行转列与列转行图文教程

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

postgresql行转列与列转行图文教程

目录列转行行转列总结列转行PostgreSQL列转行的思路主要是利用string_to_array进行数组转换,然后用unnest进行行拆分select t.bid_unit,unit_id from unit twhere t.uni
2023-06-11

SQL行转列与列转行的方法

本文小编为大家详细介绍“SQL行转列与列转行的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“SQL行转列与列转行的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.数据集+---+----------+
2023-06-29

MySQL实现列转行与行转列的操作代码

目录引言列转行(Pivoting)示例数据转编程网换前查询结果列转行 SQL 语句转换后查询结果行转列(Unpivoting)示例数据转换前查询结果行转列 SQL 语句转换后查询结果引言在处理数据时,我们常常会遇到需要将表中的列(字段)转
MySQL实现列转行与行转列的操作代码
2024-09-25

MySQL实验--静态行转列->动态行转列->存储过程使用行转列

概述 今天主要用一个实验来介绍一下在使用行转列的过程及相关实验。下面演示一下。 创建表 这里我用一个比较简单的例子来说明,也是行转列的经典例子,就是学生的成绩三张表:学生表、课程表、成绩表 1、学生表 就简单一点,学生学号、学生姓名两个字段 CREATE T
MySQL实验--静态行转列->动态行转列->存储过程使用行转列
2016-08-19

一文弄懂MYSQL如何列转行

目录一、需求:二、如何实现1)首先看我们的静态SQL2)那么就有人问了,如果我有100门课程不是要写100次名称,这也太麻烦了?3)这样每次都写一长串sql也很麻烦?总结一、需求:有三张表,学生表、成绩表和课程表,我们可以通过连表查询出学
2022-06-16

SQL Server如何使用PIVOT与unPIVOT实现行列转换

这篇“SQL Server如何使用PIVOT与unPIVOT实现行列转换”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SQL
2023-06-30

编程热搜

目录