oracle sql列转行_ORACLE 列转行和行转列的SQL和函数
本文介绍两种行、列转换方法,一种是常规的SQL,一种是ORACLE 11G提供的函数。下面使用一个小例子对这两种方法进行说明。
---------------------------------原始表----------------------------------
SQL> select * from cj1;
NAME KM CJ
----- ----- ----------
张三 语文 80
张三 数学 86
张三 英语 75
李四 语文 78
李四 数学 85
李四 英语 79
SQL> select * from cj2;
NAME YUWEN SHUXUE YINGYU
----- ---------- ---------- ----------
张三 80 86 75
李四 78 85 79
---------------------------------常规SQL----------------------------------
--行转列
SQL> SELECT t.name,
2 SUM(decode(t.km, '语文', t.cj, 0)) yuwen,
3 SUM(decode(t.km, '数学', t.cj, 0)) shuxue,
4 SUM(decode(t.km, '英语', t.cj, 0)) yingyu
5 FROM cj1 t
6 GROUP BY t.name;
NAME YUWEN SHUXUE YINGYU
----- ---------- ---------- ----------
张三 80 86 75
李四 78 85 79
--列转行
SQL> SELECT t.name, '语文' km, t.yuwen cj
2 FROM cj2 t
3 UNION
4 SELECT t.name, '数学' km, t.shuxue cj
5 FROM cj2 t
6 UNION
7 SELECT t.name, '英语' km, t.yingyu cj
8 FROM cj2 t;
NAME KM CJ
----- ----- ----------
张三 数学 86
张三 英语 75
张三 语文 80
李四 数学 85
李四 英语 79
李四 语文 78
---------------------------------Oracle 11g新特性----------------------------------
--行转列
SQL> SELECT *
2 FROM cj1 t pivot(SUM(t.cj) FOR km IN('语文' yuwen,
3 '数学' shuxue,
4 '英语' yingyu));
NAME YUWEN SHUXUE YINGYU
----- ---------- ---------- ----------
张三 80 86 75
李四 78 85 79
--列转行
SQL> SELECT * FROM cj2 t unpivot(cj FOR km IN(yuwen , shuxue, yingyu));
NAME KM CJ
----- ------- ----------
张三 YUWEN 80
张三 SHUXUE 86
张三 YINGYU 75
李四 YUWEN 78
李四 SHUXUE 85
李四 YINGYU 79
oracle sql列转行_ORACLE 列转行和行转列的SQL和函数相关推荐
- mysql 列换行 表设计 设计_MySql行转列、列转行
现mysql中有一张表php_user表,表结构为: 表中数据有: 现在想查询出来不同学生的语数外成绩在一行显示,那么需要用到行转列的用法, 一.行转列 1.使用case...when....then ...
- sql server列转行怎么提高效率_行转列、列转行
1.行转列 所谓行转列,即将一行数据转成多行显示,或者说将多列数据转成一列显示.通常将转化后的列名为某一行中某一列的值,来识别原先对应的数据.具体如下: 通常的SQL实现用union来实现,如下.有些 ...
- excel根据条件列转行_excel怎么批量把行变成列
1. excel中怎样批量将行数据转换成列数据 你好,楼主想要的功能,可以使用VBA程序实现. (一)VBA程序代码如下:(代码运行之前请做好数据备份,以免丢失) Sub abcd()Dim i1, ...
- oracle 按旬统计并且每月小计 行转列 PIVOT函数 与分组小计 ROLLUP 函数
数据库版本:oralce 11g 表名WM_TD_WATER_DAILY 结构如下,我把没用到的字段隐藏了,全放出来不太好哈. MONITOR_ID为BI_TB_MONITOR_BI的ID ,用于关 ...
- mysql 行转列分级输出_MySQL如何实现行转列分级输出?_MySQL
概述 好久没写SQL语句,今天看到问答中的一个问题,拿来研究一下. 问题链接:关于Mysql 的分级输出问题 情景简介 学校里面记录成绩,每个人的选课不一样,而且以后会添加课程,所以不需要把所有课程当 ...
- SparkSQL读取hive中的数据,行转列的两种方式【行转列专用函数,UDAF】
先给数据: vi employees 1,George,nan 2,honey,nv 3,georgedage,nan 4,kangkang,nv 上传数据: hdfs dfs -mkdir /sec ...
- android webservices 返回多行多列数据,NoahWeb实现表格多行多列
用NoahWeb的表现层指令可以在动态生成的页面中非常容易的实现多行多列的表格.在正式学习以前我们需要先来了解一下怎么用NoahWeb的表现层来做动态内容显示. 在NoahWeb设计器中新建或打开一项 ...
- python中pandas.DataFrame如何对行与列求和以及如何添加新行与列的示例
转载 本文介绍的是python中DataFrame对行与列求和及添加新行与列的相关资料,下面话不多说,来看看详细的介绍吧. 方法如下: 导入模块: from pandas import DataFra ...
- matlab 行 列表示,Matlab Mathematica 向量(行,列) 矩阵
Matlab: 矩阵用方括号[]表示,元素之间用"," 或者 空格 隔开,行与行之间用分号";"隔开: mat = [ 1 2 3 4; 4 5 6 7 ] 或 ...
- excel表格行宽列高怎么设置_excel的行高列宽怎么设置_excel的行高和列宽在哪设置...
在使用excel时,行高和列宽一定程度上影响着整个表格的美观程度,下面为你分享了几个关于行高列宽的超实用的小技巧,感兴趣的小伙伴快来看看吧! 1.行高的单位像素怎么更改为厘米? 在设置表格时,要求设置 ...
最新文章
- LeetCode 1021:Remove Outermost Parentheses
- Oracle 基础系列之1.1 oracle的安装
- 我的JMX心得 -- Server端
- thinkphp5 mysql助手_ThinkPHP5-数据库基本操作
- TypeScript学习(七):类型断言
- 什么是组播-网工必会的组播基础概念详解
- 快速查看是哪个文件占用空间大
- NEF格式文件转换为JPG格式
- 电影爱好者福利,一些电影网站汇总
- Android apk闪退问题
- 工作积累10——推荐一本看过最好的数据分析的书
- 千图成像,手把手教你制作人像拼图效果
- unix 增强工具_适用于任何UNIX系统的10种出色工具
- 猜数字游戏 由计算机,猜数字游戏玩法
- zdm各命令的功能和作用_利用ZDM菜单管线设计工具绘制管线步骤
- 邮箱邮件收发件服务器怎么设置?
- 小波变换db4进行四层分解及其信号重构—matlab分析及C语言实现
- TSC 标签打印机,使用TSPL指令,前端 jsp 调用打印二维码和文本标签的案例
- 互联网中的视频(HTML5) — (1)
- MFC程序调用Windwos CMD命令打印图片 MFC 控件显示层次调整,即(叠放次序)和绘制遮挡置于底层顶层灰色