背景说明

Oracle中UNPIVOT语法:SELECT ...

FROM ...

UNPIVOT [INCLUDE|EXCLUDE NULLS]

(unpivot_clause

unpivot_for_clause

unpivot_in_clause )

WHERE ...

示例如下:SQL> SELECT *

2 FROM pivoted_data

3 UNPIVOT (

4 deptsal --

5 FOR saldesc --

6 IN (d10_sal, d20_sal, d30_sal, d40_sal) --

7 );

JOB SALDESC DEPTSAL

---------- ---------- ----------

CLERK D10_SAL 1430

CLERK D20_SAL 2090

CLERK D30_SAL 1045

SALESMAN D30_SAL 6160

PRESIDENT D10_SAL 5500

MANAGER D10_SAL 2695

MANAGER D20_SAL 3272.5

MANAGER D30_SAL 3135

ANALYST D20_SAL 6600

解决方案

您可以在Polardb-O中使用Crosstab函数接口进行行列转换。

示例

转行示例如下:with a as ( -- A对应原始数据(即需要列转行的数据)

select

js->>'seller' as seller,

js->>'se_year' as se_year,

jan ,

feb ,

mar ,

apr ,

may ,

jun ,

jul ,

aug ,

sep ,

oct ,

nov ,

dec

from crosstab(

-- 这个是需要进行行列变换的数据源。

-- 排序字段为group by字段,最后一个字段为转换后的内容字段,导数第二个字段为行列变换的字段(内容为枚举,比如月份)

-- (必须在下一个参数中提取出对应的所有枚举值)

$$select jsonb_build_object('seller', seller, 'se_year', se_year) as js, se_month, sum(se_amount) from tbl_sellers_info group by 1,2 order by 1$$,

-- 行列转换的行,有哪些值被提取出来作为列。 这个在这里代表的是月份,也就是se_month的值

-- 或(select * from (values('jan'),...('dec')) t(se_month))

'select distinct se_month from tbl_sellers_info order by 1'

)

as -- crosstab 输出格式

( js jsonb, -- 第一个参数SQL内对应的order by对应的字段(1个或多个)

Jan numeric, -- 第一个参数SQL内对应导数第二个字段的枚举值,(行转列)

feb numeric, -- ...同上

mar numeric,

apr numeric,

may numeric,

jun numeric,

jul numeric,

aug numeric,

sep numeric,

oct numeric,

nov numeric,

dec numeric

)

order by 1,2

)

,

-- b , 用jsonb把多列合并为一列,并使用jsonb_each展开。

b as (select seller, se_year, jsonb_each(row_to_json(a)::jsonb-'seller'::text-'se_year'::text) as rec from a)

select seller, se_year, (b.rec).key as month, (b.rec).value as sum from b;

mysql 列转行 unpivot_Unpivot 列转行相关推荐

  1. mysql 字段内部转行_mysql 列转行、列转行的有关问题_mysql

    mysql 列转行.列转行的问题 今天在逛大java吧的时候看到一个行转列.列转行的问题,看了之后还真的不知道怎么下手,可能平时用hibernate作为持久层用多了,sql语句也不会写了,赶紧去找度娘 ...

  2. mysql 列转行union all_SQL查询案例:列行转换[列转行, 使用 UNION ALL 处理]

    SQL查询案例:列行转换[列转行, 使用 UNION ALL 处理] 在行列转换的处理之后, 有时候会遇到,要列行装换的 CREATE TABLE TestColRow ( name   VARCHA ...

  3. mysql 列转行union all_SQL查询案例:列行转换[列转行, 使用 UNION ALL 处理] | 学步园...

    SQL查询案例:列行转换[列转行, 使用 UNION ALL 处理] 在行列转换的处理之后, 有时候会遇到,要列行装换的 CREATE TABLE TestColRow ( name   VARCHA ...

  4. SQL Server:使用 PIVOT 行转列和 UNPIVOT 列转行

    ylbtech-SQL Server:使用 PIVOT 行转列和 UNPIVOT 列转行 可以使用 PIVOT 和 UNPIVOT 关系运算符将表值表达式更改为另一个表.PIVOT 通过将表达式某一列 ...

  5. oracle unpivot 索引_Oracle 行转列pivot 、列转行unpivot 的Sql语句总结

    这个比较简单,用||或concat函数可以实现 select concat(id,username) str from app_user select id||username str from ap ...

  6. oracle pivot 列转行,Oracle 列转行函数pivot

    作为数据库应用开发人员,我们有很大的精力应付在处理各种各样的数据类型,展现各种维度的报表上面. [url=]行转列[/url].列转行是我们经常会遇到的"诡异"需求.标准SQL没有 ...

  7. unpivot行转列 oracle,Oracle列转行_unpivot

    Oracle列转行_unpivot 在实际业务开发环境中,我们经常会遇到要对查询的数据集进行列转行的需求.那么Oracle是如何实现的呢?本文也将通过几个实例来详细讲解一下. Oracle列转行 Or ...

  8. unpivot用法 oracle10g,Oracle 行转列pivot 、列转行unpivot 的Sql语句总结(转)

    多行转字符串 这个比较简单,用||或concat函数可以实现 1 select concat(id,username) str from app_user 2 3 select id||usernam ...

  9. Mysql学习——行与列的多种转换

    目录 一.行转列 二.列转行 三.多列转一行 四.一行转多列 五.行转列的其案例 首先准备一张表 CREATE TABLE CJ (Name varchar(32),Subject varchar(3 ...

最新文章

  1. 以使用QSqlQuery向数据库中插入数据为例,做一个小结
  2. python培训班哪些比较好-在线Python编程培训哪家机构比较好?
  3. tomcat https 配置
  4. tp5循环查询语句_tp5 foreach 套循环的优化(就是foreach 里边再查表)
  5. MATLAB怎么表示均布荷载,MATLAB平面四节点等参元分析程序说明
  6. 从《英雄联盟》的装备系统谈玩家行为与游戏设计
  7. 在linux安装光盘启动不了,linux光盘启动
  8. 使用PostgREST的RestAPI操作之管理与优化
  9. 航行金税盘_通过陌生事物的情感进行统计好奇心航行
  10. 微软再次“封杀” Flash Player!
  11. 【Java】0X002 Hello World
  12. 怎么将表中的空格都转变为0???
  13. Dell Precision M4800 AppleALC声卡驱动修复教程
  14. 计算机考研复试面试常问问题 数据结构篇(上)
  15. Git查询一定时间范围团队代码提交日志
  16. 利用Get-FileHash工具进行哈希验证
  17. 等差数列和等比数列公式
  18. STM32F简单应用
  19. c语言的一颗会变色的圣诞树
  20. 网站搭建的理解与流程

热门文章

  1. 机器学习笔记4-sklearn决策树(上)
  2. 低效能人士的 7 个习惯
  3. Angular toastr提示框
  4. JVM虚拟机,也就那么回事!(总结+绘图+流程+代码)
  5. python 设置全局代理_Python中使用socks5设置全局代理的方法示例
  6. ReactDom is not defined
  7. 【项目】—— 语音小管家Sosuke
  8. linux根分区找不到大文件
  9. oracle nvl函数3个参数,oracle中的函数介绍(一):nvl函数、decode函数、case when函数、sum函数...
  10. android删除数据库方法,Android删除SQL数据库