IT忍者神龟之 oracle行转列、列转行
一、行转列
须要将例如以下格式
转换为:
这就是最常见的行转列,主要原理是利用decode函数、聚集函数(sum)。结合group by分组实现的
- create table test(
- id varchar2(255) primary key not null,
- name varchar2(255),
- course varchar2(255),
- score varchar2(255)
- );
- insert into test values(sys_guid(),'zhangsan','语文',85);
- insert into test values(sys_guid(),'zhangsan','数学',78);
- insert into test values(sys_guid(),'zhangsan','英语',90);
- insert into test values(sys_guid(),'lisi','语文',73);
- insert into test values(sys_guid(),'lisi','数学',84);
- insert into test values(sys_guid(),'lisi','英语',92);
行转列SQL语句为:
- select t.name,
- sum(decode(t.course, '语文', score,null)) as chinese,
- sum(decode(t.course, '数学', score,null)) as math,
- sum(decode(t.course, '英语', score,null)) as english
- from test t
- group by t.name
- order by t.name
二、列转行
将例如以下格式
转换为
这就是最常见的列转行。主要原理是利用SQL里面的union
- create table test(
- id varchar2(255) primary key not null,
- name varchar2(255),
- ch_score varchar2(255),
- math_score varchar2(255),
- en_score varchar2(255)
- );
- insert into test values(sys_guid(),'zhangsan',88,76,90);
- insert into test values(sys_guid(),'lisi',91,67,82);
列转行SQL语句为:
- select name, '语文' COURSE , ch_score as SCORE from test
- union select name, '数学' COURSE, MATH_SCORE as SCORE from test
- union select name, '英语' COURSE, EN_SCORE as SCORE from test
- order by name,COURSE
IT忍者神龟之 oracle行转列、列转行的更多相关文章
- IT忍者神龟之Oracle DBA经常使用查询吐血列举
–1. 查询系统全部对象 select owner, object_name, object_type, created, last_ddl_time, timestamp, status from ...
- Oracle 多行变一列的方法
多行变一列的方法有很多,觉得这个第一眼看懂了当时就用的这个办法. 情况是这样的.以下数据前几列是一样的,需要把VAT_VALUE_CHAR 的值放在同一行上. SELECT * FROM ps_vat ...
- oracle 行转列、列转行
最近做数据处理,经常遇到需要行转列.列转行的场景,记录个非常简单实用的oracle 列转行.行转的列方法 1.行转列,基础数据如下 做行转列处理 处理SQL select user_name,max ...
- oracle 行转列 分析函数
oracle 行转列 首先看一下源数据: 方法一:WM_CONCAT group by 这个方法没有问题. SELECT CODE_TS, WMSYS.WM_CONCAT(S_NUM + || ':' ...
- Oracle 多行转多列
Oracle 多行转多列,列值转为列名 前段时间做调查问卷,客户创建自定义问卷内容,包括题目和选项内容; 之后需要到处问卷明细,,,,麻烦来咯 于是到网上到处搜索,没有直接结果;于是又找各种相似的 ...
- Oracle字符串行拆分成列的三种方式
Oracle字符串行拆分成列的三种方式 --muphy 开发过程中经常会遇到将前台多个值用逗号连接一同传递到后台查询,这个用逗号连接的字符串分隔的每个字符串分别对应Oracle数据库表的不同行. 如下 ...
- oracle行转列、列转行、连续日期数字实现方式及mybatis下实现方式
转载请注明出处:https://www.cnblogs.com/funnyzpc/p/9977591.html 九月份复习,十月份考试,十月底一直没法收心,赶在十一初 由于不可抗拒的原因又不得不重新找 ...
- Oracle 行转列pivot 、列转行unpivot 的Sql语句总结
这个比较简单,用||或concat函数可以实现 select concat(id,username) str from app_user select id||username str from ap ...
- oracle行锁select for update
oracle行锁select for update 学习了:https://blog.csdn.net/zdwzzu2006/article/details/50490157 学习了:https:// ...
随机推荐
- 【spring cloud】spring cloud Sleuth 和Zipkin 进行分布式链路跟踪
spring cloud 分布式微服务架构下,所有请求都去找网关,对外返回也是统一的结果,或者成功,或者失败. 但是如果失败,那分布式系统之间的服务调用可能非常复杂,那么要定位到发生错误的具体位置,就 ...
- Android Gradle Plugin指南(四)——測试
原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Testing 5.Testing(測试) 构建一个測试 ...
- A secure connection is requiered(such as ssl). More information at http://service.mail.qq.com/cgi-bin/help?id=28
上面回答有问题,找到qq官方的文档了 http://service.exmail.qq.com/cgi-bin/help?id=28&no=1000585&subtype=1 如果您的 ...
- Tomcat报BAD packet signature 18245错误的原因
今天在启动服务器时,报了一个BAD packet signature 18245错误 详细错误如下: 2009-6-5 11:09:11 org.apache.jk.common.MsgAjp pro ...
- Spring加载Hibernate 映射的几种方式及区别
LocalSessionFactoryBean有好几个属性用来查找hibernate映射文件: mappingResources.mappingLocations.mappingDirectoryLo ...
- 把NDK的工具链提取出来单独使用
独立toolchain 把NDK压缩包解压到系统,如/mnt目录下,后在/mnt目录下建立文件夹my_ndk_toolchain,然后再/mnt目录下执行以下命令:/mnt/android-ndk-r ...
- UVC调试
USB video class(又称为USB video device class or UVC)就是USB device class视频产品在不需要安装任何的驱动程序下即插即用,包括摄像头.数字摄影 ...
- tsort - 拓扑排序
tsort - 拓扑排序 本文链接:http://codingstandards.iteye.com/blog/834572 (转载请注明出处) 用途说明 tsort命令通常用于解决一种逻辑问题, ...
- 一文学会最常见的10种NLP处理技术
一文学会最常见的10种NLP处理技术(附资源&代码) 技术小能手 2017-11-21 11:08:29 浏览2562 评论0 算法 HTTPS 序列 自然语言处理 神经网络 摘要: 自然 ...
- OpenStreetMap地图数据介绍(转)
原文链接:每日一读 Packtpub.OpenStreetMap(1) 相信绝大多数人都知道Wiki,但要提起地图,大家第一反应肯定是Google地图.在没看这本书之前,还真不知原来还有OpenStr ...