oracle SQL竖表转横表(行转列)
T_T_STUDENT表查询记录如下,要转成横表
姓名 课程 成绩
1 张飞 语文 80
2 张飞 数学 87
3 关羽 语文 97
4 张飞 英语 68
5 关羽 数学 53
6 刘备 语文 90
create table T_T_STUDENT ( name VARCHAR2(20), course VARCHAR2(20), score NUMBER(10) )
输出结果如下:
姓名 语文 数学 英语
1 刘备 90 94 92
2 关羽 97 53 95
3 张飞 80 87 68
区别如果条件是单一值时,用decode比较简便,如果判断条件比较复杂是用case when实现
oracle SQL横表转竖表(列转行)
这儿要用到另一的技巧就是笛卡尔乘积,将一行复制成三行,每一行取一个类型的电话
偷个懒儿把上边的结果表叫r表,把列还原成行的SQL:
偷个懒儿把上边的结果表叫r表,把列还原成行的SQL:
#1.空的还为空 with r as( SELECT T.NAME, SUM(DECODE(T.Course, '语文', T.Score)) 语文, SUM(DECODE(T.Course, '数学', T.Score)) 数学, SUM(DECODE(T.Course, '英语', T.Score)) 英语 FROM T_T_STUDENT T GROUP BY T.NAME ) select r.name, decode(lvl,1,'语文',2,'数学',3,'英语') corse, decode(lvl,1,r.语文,2,数学,3,英语) score from r, (select level lvl from dual connect by level<=3) #2.空的填0 with r as ( SELECT T.NAME, SUM(CASE T.Course WHEN '语文' THEN T.Score ELSE 0 END) 语文, SUM(CASE T.Course WHEN '数学' THEN T.Score ELSE 0 END) 数学, SUM(CASE T.Course WHEN '英语' THEN T.Score ELSE 0 END) 英语 FROM T_T_STUDENT T GROUP BY T.NAME) select r.name, decode(lvl,1,'语文',2,'数学',3,'英语') corse, decode(lvl,1,r.语文,2,数学,3,英语) score from r, (select level lvl from dual connect by level<=3)
2. 11g 自带的行列转换
11g在SELECT语句中新加了关键词PIVOT和UNPIVOT,用这两个关键词,重写上面的两个查询,就变成这个样子的了:
行变列:
select * from t_t_student pivot (max(score) for course in('语文' as 语文,'数学' as 数学,'英语' as 英语))
列变行:
正在研究,没弄出来呢
相关推荐
Oracle Sql语句转换成Mysql Sql语句java 源码,非常简单,只要给定源oracle sql语句地址,和生成目标文件地址运行即可。
Oracle数据库sql转换mysql数据库工具,用需要的同学可以下载
可将常规的sqlserver 的sql语句转换为 oracle语法,核心逻辑在SqlConvertToOracle.pas,便于入门。
oracle sql行列转换
分别讲述了SQLServer和Oracle行列转换的两种方式,可以通过SQL实现,也可通过关键字搞定; 还可以看到Oracle与SQLServer关键字用法的差异。
sqlserver数据表向oracle转换,输入的参数是表名,输出的是建表语句
oracle到sqlserver 存储过程语法转换,希望对大家有帮助啊! 最近刚把oracle的数据库移植到sqlserver!
本人在工作中遇到了涉及到数据库行列之间相互转换的问题,在网上搜索了很久也没有一个比较完整的解释,通过本人自己的摸索测试,整理出来了Oracle中SQL语句行列之间相互转换的资料,大家可以下载学习。
oraclesql判断值为空-Oracle-sqlserver的空值(null)判断.pdf
sqlserver自动生成sql语句工具sqlserver转oracle
oracle通过sql实现字符串转数字oracle函数,可用于字符串的最终排序
Oracle Sql基础很系统的介绍了oracle,从基本是SQL语句到转换函数,多表查询,操纵数据,事务处理,对表的操作等做了详细讲解,希望能给朋友们带来点帮助。
DB2 SQL 通过函数(CONCAT/POSSTR/LOCATE)实现行转列,列转行 可以按照标点把多列转换为一行,多行转换为一列
sql数据库与oracle之间的转换以及导入到出
java实现oracle和sqlserver数据库转换(包含大数据),只能用炫酷来形容,感兴趣就下载看看吧
支持oracle,sqlsever,access等数据库之间数据格式转换:即Oracle转SQL Server;SQL Server转Oracle;Oracle转Access;Access转Oracle;SQL Server转Access, Access转SQL Server等。可以实现数据库的移植,异构数据库...
数据库转换工具,可实现oracle,mysql,sqlserver,sybase,db2相互转换
这一部分概述了 Transact-SQL 和 PL/SQL 语言语法之间的相同点和不同点,并给出转换策略。 要将 Oracle DML 语句和 PL/SQL 程序迁移到 SQL Server 时,请按下列步骤执行: 1. 验证所有 SELECT、INSERT、UPDATE 和 ...