Oracle 数据显示 横表转纵表
-- 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 |
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语句实现,原理同该语句,这里不再过多描述。
相关推荐
-
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
随机推荐
- Angular2使用Guard和Resolve进行验证和权限控制
- 正则表达式中最短匹配模式的用法浅析
- Js 获取当前日期时间及其它操作实现代码
- 正则文本框只能输入正整数
- Python简单调用MySQL存储过程并获得返回值的方法
- js实现的光标位置工具函数示例
- javascript算法之二叉搜索树的示例代码
- 把JS与CSS写在同一个文件里的书写方法
- C++事件处理中__event与__raise关键字的用法讲解
- JS实现仿Windows7风格的网页右键菜单效果代码
- div层跨越iframe帧显示在上面的解决方法附代码
- SQL Server使用row_number分页的实现方法
- Jquery 焦点图 用于图片展示效果代码
- Android在线更新SDK的方法(使用国内镜像)
- Android Handler消息派发机制源码分析
- 深入剖析Android中init进程实现的C语言源码
- 使用log_format为Nginx服务器设置更详细的日志格式方法
- 微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
- python3实现的zip格式压缩文件夹操作示例
- Java实现商品的查找、添加、出库、入库操作完整案例