sql server 行转列问题

表结构:

CREATE TABLE tb_score(

id INT(11) NOT NULL auto_increment,

userid VARCHAR(20) NOT NULL COMMENT '用户id',

subject VARCHAR(20) COMMENT '科目',

score DOUBLE COMMENT '成绩',

PRIMARY KEY(id)


插入的数据

INSERT INTO tb_score(userid,subject,score) VALUES ('001','语文',90);

INSERT INTO tb_score(userid,subject,score) VALUES ('001','数学',92);

INSERT INTO tb_score(userid,subject,score) VALUES ('001','英语',80);

INSERT INTO tb_score(userid,subject,score) VALUES ('002','语文',88);

INSERT INTO tb_score(userid,subject,score) VALUES ('002','数学',90);

INSERT INTO tb_score(userid,subject,score) VALUES ('002','英语',75.5);

INSERT INTO tb_score(userid,subject,score) VALUES ('003','语文',70);

INSERT INTO tb_score(userid,subject,score) VALUES ('003','数学',85);

INSERT INTO tb_score(userid,subject,score) VALUES ('003','英语',90);

INSERT INTO tb_score(userid,subject,score) VALUES ('003','政治',82);

行转列后如下
图片说明

看结果需要分组,但是不知道怎么弄,求大佬解救,尝试过用 case when处理

可以解决,pivot不知道怎么弄,求大佬解救,谢谢。

回答

把id列排除

select *

from

(

select userid,subject,score from tb_score

) s

pivot

(

sum(s.score) for s.subject in (语文,数学,英语,政治)

) as t

order by userid

上边的create table语句不是sqlserver的,是mysql的

以上是 sql server 行转列问题 的全部内容, 来源链接: utcz.com/a/41472.html

回到顶部