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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
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数据库官方文档:官方文档

相关文章
|
1月前
|
存储 Java 数据库连接
时序数据库TDengine 3.3.5.0 发布:高并发支持与增量备份功能引领新升级
TDengine 3.3.5.0 版本正式发布,带来多项更新与优化。新特性包括提升 MQTT 稳定性和高并发性能、新增 taosX 增量备份与恢复、支持 JDBC 和 Rust 连接器 STMT2 接口、灵活配置 Grafana Dashboard 等。性能优化涵盖查询内存管控、多级存储迁移、强密码策略等,全面提升时序数据管理的效率和可靠性。欢迎下载体验并提出宝贵意见。
41 5
|
1月前
|
Cloud Native 关系型数据库 分布式数据库
让PolarDB更了解您--PolarDB云原生数据库核心功能体验馆
让PolarDB更了解您——PolarDB云原生数据库核心功能体验馆,由阿里云数据库产品事业部负责人宋震分享。内容涵盖PolarDB技术布局、开源进展及体验馆三大部分。技术布局包括云计算加速数据库演进、数据处理需求带来的变革、软硬协同优化等;开源部分介绍了兼容MySQL和PostgreSQL的两款产品;体验馆则通过实际操作让用户直观感受Serverless、无感切换、SQL2Map等功能。
108 7
|
3月前
|
Linux 数据库 数据安全/隐私保护
GBase 数据库 加密客户端---数据库用户口令非明文存放需求的实现
GBase 数据库 加密客户端---数据库用户口令非明文存放需求的实现
|
3月前
|
JSON JavaScript 关系型数据库
node.js连接GBase 8a 数据库 并进行查询代码示例
node.js连接GBase 8a 数据库 并进行查询代码示例
|
3月前
|
SQL 数据库
gbase 8a 数据库 shm满导致gclusterd进程异常
gbase 8a 数据库 shm满导致gclusterd进程异常
|
3月前
|
SQL 存储 BI
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
|
3月前
|
网络安全 数据库
gbase 8a 数据库 安装8ampp 常见ssh报错问题
gbase 8a 数据库 安装8ampp 常见ssh报错问题
|
3月前
|
SQL 数据库
gbase 8a 数据库 SQL优化案例-关联顺序优化
gbase 8a 数据库 SQL优化案例-关联顺序优化
|
3月前
|
存储 机器学习/深度学习 监控
南大通用GBase 8s数据库onbar基础使用教程
数据备份与恢复是确保数据安全和业务连续性的关键。onbar作为GBase 8s数据库的备份工具,需配合存储管理器使用,通过配置BAR_BSALIB_PATH等参数,实现数据的备份与恢复。本文详细介绍了onbar的配置、备份、恢复及监控流程,帮助数据库管理员构建高效的数据保护方案。
|
3月前
|
数据库连接 Linux Shell
Linux下ODBC与 南大通用GBase 8s数据库的无缝连接配置指南
本文详细介绍在Linux系统下配置GBase 8s数据库ODBC的过程,涵盖环境变量设置、ODBC配置文件编辑及连接测试等步骤。首先配置数据库环境变量如GBASEDBTDIR、PATH等,接着修改odbcinst.ini和odbc.ini文件,指定驱动路径、数据库名称等信息,最后通过catalog.c工具或isql命令验证ODBC连接是否成功。