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

[Oracle] UNPIVOT 列转行

Oracle数据库中的UNPIVOT是一种用于将列转换为行的SQL操作,它允许用户将多个列的数据转换为多行的形式,以便进行更灵活的数据分析和报表生成

UNPIVOT主要用于将宽表(多列)转换为长表(多行),减少表的列数,增加行数

语法格式

SELECT pivot_column, value_column
FROM (SELECT column1, column2, column3, ...   FROM table_name)
UNPIVOT (value_column FOR pivot_column IN (column1 AS alias1, column2 AS alias2, ...)
)

参数说明

value_column:存放原列值的新列名
pivot_column:存放原列名的新列名,是转换后行数据中列标题(即原列名)所在的列的名称
IN子句中列出了需要被转换的列,以及它们转换后的别名(可选)

示例

假设我们有一个名为sale_data的表,其结构如下:

product_idjan_salesfeb_salesmar_sales
1100015002000
280012001800

我们想要将这些销售数据转换为多行的形式,以便进行更方便的数据分析,可以使用UNPIVOT来实现这一转换,具体的SQL语句如下:

SELECT product_id, month, sales  
FROM   (SELECT product_id, jan_sales, feb_sales, mar_sales   FROM sale_data)   
UNPIVOT   (sales FOR month IN (jan_sales AS 'January', feb_sales AS 'February', mar_sales AS 'March'))

执行上述SQL语句后,将得到以下结果:

product_idmonthsales
1January1000
1Febuary1500
1March2000
2January800
2Febuary1200
2March1800

提示Tips

① 源表数据列的数据类型需要保持一致,否则可能会出现转换失败的情况

http://www.lryc.cn/news/617165.html

相关文章:

  • CodeBuddy IDE完全食用手册:从安装到生产力爆发的技术流解剖
  • 视频前处理技术全解析:从基础到前沿
  • 【安全发布】微软2025年07月漏洞通告
  • AI大模型:(二)5.1 文生视频(Text-to-Video)模型发展史
  • 从ELF到进程间通信:剖析Linux程序的加载与交互机制
  • 音视频学习(五十三):音频重采样
  • 动态创建可变对象:Python类工厂函数深度解析
  • Vue3从入门到精通:3.1 性能优化策略深度解析
  • Unity跨平台性能优化全攻略:PC与安卓端深度优化指南 - CPU、GPU、内存优化 实战案例C#
  • docker集群
  • 在Linux中部署tomcat
  • MyBatis高级特性与性能优化:从入门到精通的实战指南
  • NEON性能优化总结
  • EXISTS 替代 IN 的性能优化技巧
  • Unity大型场景性能优化全攻略:PC与安卓端深度实践 - 场景管理、渲染优化、资源调度 C#
  • C# 异步编程(BeginInvoke和EndInvoke)
  • openEuler、 CentOS、Ubuntu等 Linux 系统中,Docker 常用命令总结
  • Selenium经典面试题 - 多窗口切换解决方案
  • 深入解析游戏引擎(OGRE引擎)通用属性系统:基于Any类的类型安全动态属性设计
  • 如何在 Ubuntu 24.04 LTS Linux 上安装和使用 Flatpak
  • 游戏引擎(Unreal Engine、Unity、Godot等)大对比:选择最适合你的工具
  • [Ubuntu] VNC连接Linux云服务器 | 实现GNOME图形化
  • 从零开始的云计算生活——项目实战容器化
  • Ubuntu 22.04 离线环境下 Python 包与 FFmpeg 安装全攻略​
  • Python 爬虫:Selenium 自动化控制(Headless 模式 / 无痕浏览)
  • 使用Windbg分析多线程死锁项目实战问题分享
  • 从零开始的云计算生活——第四十一天,勇攀高峰,Kubernetes模块之单Master集群部署
  • 数据结构 双链表与LinkedList
  • 云原生环境Prometheus企业级监控
  • 浅谈 LangGraph 子图流式执行(subgraphs=True/False)模式