SQL豎表轉換成橫表統計


#創建表user_score
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);
#創建表user_score2
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;
#縱表轉橫表
SELECT name, 'yuwen' AS subjects, yuwen AS score FROM user_score2 UNION ALL   
SELECT name, 'shuxue' AS subjects, shuxue AS score FROM user_score2 UNION ALL   
SELECT name, 'yingyu' AS subjects, yingyu AS score FROM user_score2  
ORDER BY name,subjects DESC; 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM