Oracle 数据显示 横表转纵表

1.建表


代码如下:

-- Create table
create table test
(
dm1 char(3),
dm2 char(3),
mc1 nvarchar2(20),
val nvarchar2(20)
)

2.填入数据如下:









































DM1 DM2 MC1 VAL
101 1 c1 100
101 1 c2 80
101 1 c3 40
101 2 c1 30
101 2 c2 80
102 4 c1 9
102 6 c2 50

转换后数据显示如下:































DM1 DM2 c1 c2 c3
101 1 100 80 40
101 2 30 80  
102 4 9    
102 6   50  

3.转换语句:


代码如下:

select dm1,dm2,sum(decode(mc1,'c1',val)) c1,sum(decode(mc1,'c2',val)) c2,sum(decode(mc1,'c3',val)) c3
from test
group by dm1,dm2

注:该语句是在val为数值的情况下的执行方法,如果val不为数值型,或者包含字符串等类型的话,运用sum会报错,这里可以采用另外一个方法,将sum改为max即可,语句如下:


代码如下:

select dm1,dm2,max(decode(mc1,'c1',val)) c1,max(decode(mc1,'c2',val)) c2,max(decode(mc1,'c3',val)) c3
from test
group by dm1,dm2

此外,横表转纵表亦可用与decode意义相似的case语句实现,原理同该语句,这里不再过多描述。

(0)

相关推荐

  • Oracle 数据显示 横表转纵表

    1.建表 复制代码 代码如下: -- Create table create table test ( dm1 char(3), dm2 char(3), mc1 nvarchar2(20), val nvarchar2(20) ) 2.填入数据如下: DM1 DM2 MC1 VAL 101 1 c1 100 101 1 c2 80 101 1 c3 40 101 2 c1 30 101 2 c2 80 102 4 c1 9 102 6 c2 50 转换后数据显示如下: DM1 DM2 c1 c

  • Oracle删除表及查看表空间的实例详解

    Oracle常用的基本命令 --1.用户下表中注释模糊查询: 例如查询与优惠券关联的表 SELECT * FROM user_tab_comments t WHERE t.comments LIKE '%优惠券%'; ![这里写图片描述](http://img.blog.csdn.net/20170321112728053?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDQyNzkzNQ==/font/5a6L5L2T/fontsize/40

  • oracle用什么SQL语句判断表存不存在

    正在看的ORACLE教程是:oracle用什么SQL语句判断表存不存在.SQL SERVER用来判断表或视图存在的语句在ORACLE中不能用,请问该怎么写. 谢谢. 提问者: - 最佳答案 exists(select tname from tab where tname ='TABLENAME') 记得表名要大写,因为ORACLE是区分大小写的,所有的表名都存放在tab表中

  • Oracle数据库如何创建第一张表

    对于Oracle数据库的使用,创建一张符合自己需求的表是至关重要的,下面就让我们进行创建第一张属于自己的表 创建表时有两种种方式: (1)在cmd里边更具需要进行创建 (2)在sql developer中进行创建,而对于在可视化界面sqldeveloper中创建时,也有两种方式,即一种是使用命令直接进行创建,另外一种是使用可视化界面按钮进行点击创建 下面就是创建的具体过程: (1)首先我们进行数据的连接,在SQLdeveloper中进行操作,在使用sqldeveloper时需要下载sqldeve

  • Oracle 创建主键自增表示例代码

    前言 本篇文章给大家主要介绍的是在oracle中如果创建自增长表的方法,这里要用到序列.下面话不多说,我们来看示例代码. 示例代码 create table tb_student ( id NUMBER(10) not null, createtime DATE not null, constraint PK_tb_student primary key (id) ); comment on table "tb_student" is '学生表'; comment on column

  • Oracle数据库的实例/表空间/用户/表之间关系简单讲解

    完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等): 2) Oracle数据库实例则是一组Oracle后台进程/线程以及在服务器分配的共享内存区. 在启动Oracle数据库服务器时,实际上是在服务器的内存中创建一个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存),然后由这个Oracle数据库实例来访问和控制磁盘中的数据文件.Oracle有一个很大的内存快,成为全局区(SGA

  • Oracle多表查询中间表的创建实例教程

    ORACLE 多表查询中间表的创建 表与表之间关系的分类: 1. 一对一(了解):    * 如:人和身份证    * 分析:一个人只有一个身份证,一个身份证只能对应一个人   2. 一对多(多对一):    * 如:部门和员工    * 分析:一个部门有多个员工,一个员工只能对应一个部门   3. 多对多:    * 如:学生和课程    * 分析:一个学生可以选择很多门课程,一个课程也可以被很多学生选择 具体的实现方式: 1. 一对多(多对一):    * 如:部门和员工    * 实现方式

  • Oracle 数据仓库ETL技术之多表插入语句的示例详解

    目录 创建示例表 无条件的 INSERT ALL 语句 有条件的 INSERT ALL 语句 有条件的 INSERT FIRST 语句 多表插入语句的限制 大家好!我是只谈技术不剪发的 Tony 老师. ETL(提取.转换.加载)是指从源系统中提取数据并将其放入数据仓库的过程.Oracle 数据库为 ETL 流程提供了丰富的功能,今天我们就给大家介绍一下 Oracle 多表插入语句,也就是INSERT ALL语句. 创建示例表 我们首先创建一个源数据表和三个目标表: CREATE TABLE s

  • SQL如何实现横表与纵表相互转换

    目录 一.横表简单概述 二.纵表简单概述 三.纵表转横表代码如下以及视图展示 四.横表转纵表代码如下以及视图展示 五.横表.纵表优点与缺点 六.总结 一.横表简单概述 横表是普通的建表方式.例如:表结构为主键.字段1.字段2.字段3…. 二.纵表简单概述 纵表的表结构为主键.字段代码.字段值,字段代码则为字段1.字段2.字段3…. 三.纵表转横表代码如下以及视图展示 1.纵表视图如下: 2.纵表转换成横表视图如下: 3.sql语句如下所示: select student_name, sum(ca

  • sqoop 实现将postgresql表导入hive表

    使用sqoop导入数据至hive常用语句 直接导入hive表 sqoop import --connect jdbc:postgresql://ip/db_name --username user_name --table table_name --hive-import -m 5 内部执行实际分三部,1.将数据导入hdfs(可在hdfs上找到相应目录),2.创建hive表名相同的表,3,将hdfs上数据传入hive表中 sqoop根据postgresql表创建hive表 sqoop creat

随机推荐