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 '%优惠券%';  记得表名要大写,因为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
随机推荐
- asp.net 数据访问层基类
- 详解使用Vue Router导航钩子与Vuex来实现后退状态保存
- Vue.js仿Metronic高级表格(一)静态设计
- JavaScript动态修改网页元素内容的方法
- 笔记本下什么是迅驰处理器(cpu)相关资料第1/2页
- Mybatis3 if判断字符串变态写法
- 大家在抢红包,程序员在研究红包算法
- php输出xml必须header的解决方法
- C#实现把dgv里的数据完整的复制到一张内存表的方法
- 深入探寻mysql自增列导致主键重复问题的原因
- 使用BootStrapValidator完成前端输入验证
- 浅析python递归函数和河内塔问题
- CSS网页布局入门教程4:二列固定宽度
- JavaScript驾驭网页-CSS与DOM
- Shell中获取脚本所在目录绝对路径的方法
- 教你一步一步在linux中正确的安装Xcache加速php
- JS 通过系统时间限定动态添加 select option的实例代码
- IIS URL Rewrite Module防盗链规则配置方法
- PHP 巧用数组降低程序的时间复杂度
- Android顶部状态栏透明化并释放空间的两种实现方法
