南大通用GBase 8s 数据库 unpivot列转行函数功能介绍

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容Redis),内存型 2GB
简介: 版本 flowable 6.4.2适配gbase8s 数据库

在数据库操作中数据透视是一种常见的需求,它涉及到将行数据转换为列数据(Pivot)或将列数据转换为行数据(Unpivot)。在上一篇介绍文章中我们介绍了Pivot函数,在本篇文章中我们来看看Unpivot函数吧。

想看上一篇文章,请点击:南大通用GBase 8s pivot行转列函数功能介绍

GBase 8s unpivot函数的概述
Unpivot是Pivot操作的逆过程。它将表格中的一个或多个列转换为多个行,每个行包含一个唯一的值。这种转换使得原本在列中的多个值分布在多行中,从而可以对这些值进行纵向分析。

GBase 8s Unpivot的语法详解
在GBase 8s中,Unpivot操作的语法同样简单明了。通过指定目标字段和源字段,我们可以将数据从列格式转换为行格式,从而实现数据的深入分析。

SELECT ...
FROM ...
UNPIVOT [INCLUDE|EXCLUDE NULLS] --- 转换结果中是否包含NULL值的行,缺省不包含空值
(unpivot_val_col_lst --- 目标字段,新增值所在的列的列名
unpivot_for_clause --- 目标字段 ,新增列转换行后所在列的列名
unpivot_in_clause --- 源字段 ,需要转换为行的列名

WHERE ...
GBase 8s Unpivot示例
先创建一个 pivot 操作后的结果集用于unpiovt的举例。

create view v_emp as select from (SELECT deptno,job, sal1 FROM emp)
PIVOT( SUM(sal1)
FOR deptno IN
(10 as d1, 20 d2,30 d3)) ;
select
from v_emp;
Result:
job d1 d2 d3
president 5000.00
manager 2450.00 5825.00
salesman 1500.00 1250.00 2850.00
clerk 800.00 3000.00

4 row(s) retrieved.
--用例1:

SELECT * FROM v_emp
UNPIVOT
(
deptsal ---指定列转换行后计算值的列的列名
FOR saldesc ---指定列转换行后所在列的列名
IN (d1, d2, d3) --需要转换成行的列
);
Result:

job saldesc deptsal
president d1 5000.00
manager d1 2450.00
manager d2 5825.00
salesman d1 1500.00
salesman d2 1250.00
salesman d3 2850.00
clerk d1 800.00
clerk d2 3000.00
8 row(s) retrieved.
GBase 8s的unpivot转换查询注意事项
unpivot 查询可以作用于任何例,不仅仅是聚合后的列或 pivot 操作后的列,可以对任何表、任何视图的列进行 unpivot操作。

一个 unpivot 查询可以返回的最大行数为:分组数 unpivot_in_clause 中指定的转换操作列(上述列子中为4(job) 3(转换列)=12,默认exclude nulls,不含空行,去掉4个空行,则结果为8)。

GBase 8s限制了unpivot_in_clause 中指定的转换列数目最多 256 列;

GBase 8s要求unpivot_in_clause 中的列必须是相同的数据类型。

GBase 8s要求unpivot_for子句的项个数与unpivot_in子句中的AS项表达式数目保持一致。

在pivot 中,pivot_in_clause 和pivot_clause中可以指定别名。unpivot 语法中也允许使用别名,但是只能给 unpivot_in_clause 中定义的列指定别名。且GBase 8s只能是常量表达式,unpivot_in_clause 中的别名,GBase 8s不能支持加单引号。

其他使用上限制可以参考《GBase 8s V8.8 SQL 指南:语法.pdf》

GBase 8s数据库官方文档:官方文档

相关文章
|
10天前
|
SQL 关系型数据库 MySQL
阿里云RDS云数据库全解析:产品功能、收费标准与活动参考
与云服务器ECS一样,关系型数据库RDS也是很多用户上云必买的热门云产品之一,阿里云的云数据库RDS主要包含RDS MySQL、RDS SQL Server、RDS PostgreSQL、RDS MariaDB等几个关系型数据库,并且提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案,帮助您解决数据库运维的烦恼。本文为大家介绍阿里云的云数据库 RDS主要产品及计费方式、收费标准以及活动等相关情况,以供参考。
|
3月前
|
SQL 存储 关系型数据库
MySQL功能模块探秘:数据库世界的奇妙之旅
]带你轻松愉快地探索MySQL 8.4.5的核心功能模块,从SQL引擎到存储引擎,从复制机制到插件系统,让你在欢声笑语中掌握数据库的精髓!
141 26
|
5月前
|
存储 缓存 自然语言处理
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
139 8
评论功能开发全解析:从数据库设计到多语言实现-优雅草卓伊凡
|
7月前
|
SQL Linux 数据库
【YashanDB知识库】崖山数据库Outline功能验证
本文来自YashanDB官网,主要测试了数据库优化器在不同场景下优先使用outline计划的功能。测试环境包括相同版本新增数据、绑定参数执行、单机主备架构以及数据库版本升级等场景。通过创建表、插入数据、收集统计信息和创建outline等步骤,验证了在各种情况下优化器均能优先采用存储的outline计划。测试结果表明,即使统计信息失效或数据库版本升级,outline功能依然稳定有效,确保查询计划的一致性和性能优化。详情可见[原文链接](https://www.yashandb.com/newsinfo/7488286.html?templateId=1718516)。
【YashanDB知识库】崖山数据库Outline功能验证
|
7月前
|
NoSQL 关系型数据库 MongoDB
Apifox与Apipost数据库连接功能详细对比,让接口管理更高效!
在现代软件开发中,数据库是应用运行的核心组件,接口管理工具则是连接和调试数据库的重要桥梁。本文对比了 Apifox 和 Apipost 两款工具的数据库连接功能。Apipost 支持全面的关系型与非关系型数据库(如 MySQL、Redis、MongoDB),功能强大且免费,适合复杂项目;而 Apifox 在关系型数据库支持上表现良好,但非关系型数据库(尤其是 Redis)功能有限且收费,更适合中小项目以关系型数据库为主的需求。根据项目需求选择合适的工具,可显著提升开发效率和稳定性。
|
7月前
|
数据库连接 PHP 数据库
【YashanDB知识库】PHP使用ODBC使用数据库绑定参数功能异常
【YashanDB知识库】PHP使用ODBC使用数据库绑定参数功能异常
|
7月前
|
SQL 关系型数据库 数据库连接
|
1月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
79 3
|
1月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
1月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。