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