使用case when,union all实现sql行转列、列转行
创作时间:
作者:
@小白创作中心
使用case when,union all实现sql行转列、列转行
引用
CSDN
1.
https://m.blog.csdn.net/weixin_38653290/article/details/85488532
以前有写过行转列,列转行的博客 具体见:
https://blog.csdn.net/weixin_38653290/article/details/84639754
今天分享下使用case when,union all实现sql行转列、列转行
-- 建表
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 ;
-- 使用PIVOT行转列
SELECT * FROM StudentScores
AS P
PIVOT
(
SUM(Score) FOR
p.Subject IN ('语文','数学','英语','生物')
) AS T
-- 使用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
-- 建表
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;
热门推荐
《熊出没》第12部:张伟、张秉君、谭笑再创经典
赵雅芝、叶童领衔《借伞》:春晚语言类节目的创新与挑战
许凯白鹿登春晚:中国影视文化新势力崛起
迈克尔·凯恩:汤姆·克鲁斯是“最后的真正的明星之一”
常见的日语称呼后缀汇总
如何在日语口语中运用敬语
满汉全席:适合家庭聚餐的美味佳肴
得了带状疱疹,一定要及时就诊
蜂蜜的25种食用方法:从日常保健到疾病治疗
樊振东新造型亮相表彰大会:从奥运冠军到时尚ICON
樊振东退出世界排名后首战乒超联赛,意外失利引发关注
樊振东落选十佳引热议:网友炸锅
老司机教你独自驾车如何保持好心态
冬季驾车回家,这些安全小贴士你get了吗?
千里归途:一个男子的过年故事与现代孝道的思考
埃菲尔铁塔:开放时间、交通方式、价格探索巴黎最具标志性的纪念碑
明德至善 和光同尘|《中国慈善家》2024年度慈善人物——王 名
三国名将王平:智勇双全的历史传奇
王平:三国时期的军事传奇
王平:从賨人将领到蜀汉名将
冬季流感高发,社区卫生服务教你正确使用退烧药
发热了?扑热息痛 vs 布洛芬,谁更靠谱?
秋冬发烧必备:绿豆汤&梨子助你快速退烧
冬日探秘:布达拉宫的神秘之旅
发展核心胜任力,实现个人成长与职业成功
高级感配色|黄黑皮最显白的的5种颜色!
北京医保最新消息:心脏起搏器报销攻略
心脏起搏器国产化加速,患者福音来了!
心脏起搏器集采降价,国产崛起!
国产心脏起搏器迎来“芯”突破:从20万到3000元,患者福音即将到来