-- 建表 CREATE TABLE StudentScores ( UserName NVARCHAR(20), -- 学生姓名 Subject NVARCHAR(30), -- 科目 Score FLOAT -- 成绩 ) -- 添加数据 INSERT INTO StudentScores SELECT '张三', '语文', 80 ; INSERT INTO StudentScores SELECT '张三', '数学', 90 ; INSERT INTO StudentScores SELECT '张三', '英语', 70 ; INSERT INTO StudentScores SELECT '张三', '生物', 85 ; INSERT INTO StudentScores SELECT '李四', '语文', 80 ; INSERT INTO StudentScores SELECT '李四', '数学', 92 ; INSERT INTO StudentScores SELECT '李四', '英语', 76 ; INSERT INTO StudentScores SELECT '李四', '生物', 88 ; INSERT INTO StudentScores SELECT '码农', '语文', 60 ; INSERT INTO StudentScores SELECT '码农', '数学', 82 ; INSERT INTO StudentScores SELECT '码农', '英语', 96 ; INSERT INTO StudentScores SELECT '码农', '生物', 78 ;
-- 使用case when行转列 select UserName, max(case when subject='语文' then score else 0 end) 语文, max(case when subject='数学' then score else 0 end) 数学, max(case when subject='英语' then score else 0 end) 英语, max(case when subject='生物' then score else 0 end) 生物 from StudentScores group by UserName
##使用union all 列转行git
-- 建表 drop table if exists StudentScores2; CREATE TABLE StudentScores2 ( UserName NVARCHAR(20), -- 学生姓名 语文 FLOAT, -- 科目 数学 FLOAT, -- 科目 英语 FLOAT, -- 科目 生物 FLOAT -- 科目 ); -- 添加数据 insert into StudentScores2 select UserName, max(case when subject='语文' then score else 0 end) 语文, max(case when subject='数学' then score else 0 end) 数学, max(case when subject='英语' then score else 0 end) 英语, max(case when subject='生物' then score else 0 end) 生物 from StudentScores group by UserName; -- 使用union all 列转行 select UserName,'语文' subject,语文 score from StudentScores2 union all select UserName,'数学' subject,数学 score from StudentScores2 union all select UserName,'英语' subject,英语 score from StudentScores2 union all select UserName,'生物' subject,生物 score from StudentScores2;
个人GitHub
QQ:2541692705
邮箱:loyalwilliams@163.com
微信扫一扫关注我,没事能够玩玩小游戏
我想去流浪,我想去读书,如有机会,江湖再见
扫一扫,领取红包,就当奖励你我付出的努力
github