纵表的样式:
create table user_score
(
name varchar(20),
subjects varchar(20),
score int
);
insert into user_score(name,subjects,score) values('张三','语文',60);
insert into user_score(name,subjects,score) values('张三','数学',70);
insert into user_score(name,subjects,score) values('张三','英语',80);
insert into user_score(name,subjects,score) values('李四','语文',90);
insert into user_score(name,subjects,score) values('李四','数学',100);
相应的,横表的样式:
create table user_score2
(
name varchar(20),
yuwen int,
shuxue int,
yingyu int
);
insert into user_score2(name,yuwen,shuxue,yingyu) values('张三',60,70,80);
insert into user_score2(name,yuwen,shuxue,yingyu) values('李四',90,100,0);
重点中的重点—————>>>>
纵表转横表(下面里有个坑,注意看):
select name,
sum(case subjects when '语文' then score else 0 end) as '语文',
sum(case subjects when '数学' then score else 0 end) as '数学',
sum(case subjects when '英语' then score else 0 end) as '英语'
from user_score group by name;
这套语句放入pl/sql中执行,会报一个ORA00923:未找到要求的FROM关键字错误。
将上面的SQL中的as出来的别名,改为用""引出,即,
(原因,目前还未深究,先发上来)
select name,
sum(case subjects when '语文' then score else 0 end) as "语文",
sum(case subjects when '数学' then score else 0 end) as "数学",
sum(case subjects when '英语' then score else 0 end) as "英语"
from user_score group by name;