日期:2014-05-16  浏览次数:20473 次

Oracle中纵表转横表(行列转换)示例

普通行列转换
假设有张学生成绩表(tb)如下:
Name Subject Result
张三 语文  74
张三 数学  83
张三 物理  93
李四 语文  74
李四 数学  84
李四 物理  94
*/


-- -----------------------------------
/*

想变成
姓名???????? 语文??????? 数学??????? 物理?????????
---------- ----------- ----------- -----------
李四???????? 74????????? 84????????? 94
张三???????? 74????????? 83????????? 93
*/

create table tb
(
?? Name???
varchar ( 10 ) ,
?? Subject
varchar ( 10 ) ,
?? Result?
int
)

insert into tb(Name , Subject , Result) values ( ' 张三 ' , ' 语文 ' , 74 )
insert into tb(Name , Subject , Result) values ( ' 张三 ' , ' 数学 ' , 83 )
insert into tb(Name , Subject , Result) values ( ' 张三 ' , ' 物理 ' , 93 )
insert into tb(Name , Subject , Result) values ( ' 李四 ' ,