INFORMIX 行列转换要求描述如下:
name course score
---------------------------------------
张三 语文 74
张三 数学 99
张三 物理 93
李四 物理 94
李四 语文 78
李四 数学 84
行列转换
name yuwen shuxue wuli
李四 78 94 86
张三 74 99 85
实现方式如下,SQL示例
---------------------------------------------------------------------
create table test_rowcols(
name char(10),
course char(10),
score int,
primary key(name,course)
);
insert into test_rowcols(name , course,score) values('张三','语文',74);
insert into test_rowcols(name , course,score) values('张三','数学',99);
insert into test_rowcols(name , course,score) values('张三','物理',85);
insert into test_rowcols(name , course,score) values('李四','语文',78);
insert into test_rowcols(name , course,score) values('李四','数学',94);
insert into test_rowcols(name , course,score) values('李四','物理',86);
select name,max(case when course='语文' then score else 0 end) as yuwen ,
max(case when course='数学' then score else 0 end) as shuxue ,
max(case when course='物理' then score else 0 end) as wuli
from test_rowcols
group by name
---------------------------------------------------------------------
name yuwen shuxue wuli
李四 78 94 86
张三 74 99 85