知识大全 关于oracle的查询结果的行列互换
Posted 数学
篇首语:业精于勤,荒于嬉。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 关于oracle的查询结果的行列互换相关的知识,希望对你有一定的参考价值。
/*
在实际使用sql工作中总会碰到将某一列的值放到标题中显示 就是总说的行列转换或者互换
比如有如下数据:
ID NAME KECHENG CHENGJI
a 语文
a 数学
b 语文
b 数学
c 语文
c 数学
那末我要求显示的结果是:
NAME YUWEN SHUXUE
a
也就是说把课程这一列放到行上显示 把成绩按照课程分配到相对应的行
我只介绍 中简单易用的方法 使用游标或者建立临时表的方法就不介绍了 效率很慢 不易理解
首先建立表:
*/
create table fzq
(
id varchar( )
name varchar( )
kecheng varchar( )
chengji varchar( )
);
插入数据:
insert into fzq values ( a 语文 );
insert into fzq values( a shuxue );
insert into fzq values ( b yuwen );
insert into fzq values ( b shuxu );
insert into fzq values ( c yuwen );
insert into fzq values ( c shuxu );
/*首先使用union 如果课程这列有多个值 那么脚本的代码就很长了 */
select name sum(yuwen) yuwen sum(shuxue) shuxue from
(
select name chengji yuwen shuxue from fzq
where kecheng= yuwen union
select name yuwen chengji shuxue
from fzq
where kecheng= shuxue
) aaa
group BY name;
/*执行结果:
NAME YUWEN SHUXUE
a
b
c
*/
/*
其次是用case 这种方法代码比较短 适合列值很多的情况
*/
select name sum(case kecheng when yuwen then chengji end) yuwen
sum(case kecheng when shuxue then chengji end) shuxue
from fzq
group by name;
/*执行结果:
NAME YUWEN SHUXUE
a
b
c
所有例子在oracle中测试 sql server没有测试 请根据实际情况修改
*/
select name sum(decode(kecheng 语文 chengji null)) 语文
sum(decode(kecheng 数学 chengji null)) 数学
sum(decode(kecheng 英语 chengji null)) 英语
from fzq
cha138/Article/program/Oracle/201311/18036相关参考
子查询目标 子查询是一种把查询的结果作为参数返回给另一个查询的一种查询 子查询可以让你将多个查询绑定在一起 嵌套子查询 多层子查询 相关子查询 可接受外部的引用 exists/any
固定列数的行列转换如 studentsubjectgrade student语文 student数学 s
ORACLE行列转换-拼成字符串 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 前段时间使用OR
在项目开发中树型结构是经常被使用的通常情况下我们对查询的结果集使用一些免费的js文件就能达到很好的显示效果比如 但是有时候我们需要对下拉列表也提供树型结构(比如论坛的板块跳转)这个时候我们就
游标是构建在PL/SQL中用来查询数据获取记录集的指针它让开发者一次访问结果集中一行记录 在oracle中提供了两种游标静态游标ref游标 静态游标静态游标是在编译的时候就被确定然后把结果集复
Oracle查询表、视图、序列等信息查询 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这几天做
(一)子查询select*fromtableA whereidoperator(select*fromtableAawhereaid=) operaor 单条记录子查询(
Oracle树查询及相关函数 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Oracle树查询的
别名 oracle别名如果别名包含空格特殊字符(如#$)或需区分大小写(Name)需要用双引号把别名引起来 selectenameName sal*AnnualSalary fromemp
ORACLE提供了一种树形结构用来实现层次查询 STARTWITH指定查询的根行 CONNECTBY指定父行和子行的关系 PRIOR引用父行 为测试方便使用如下Demo 建立数据库表Tr