sql典型例题(二)行转列

本文探讨了SQL中行转列的实现方法,通过案例分析了如何使用CASE语句结合UNION操作实现数据转换。同时,介绍了在处理学生成绩表时如何进行行转列查询,以及一个更复杂的升级版行转列问题的解决策略。
摘要由CSDN通过智能技术生成

1.行转列

在这里插入图片描述
建表语句

-- 创建 course 表
create table course (
id varchar(20),
teacher_id varchar(20),
week_day varchar(20),
has_course varchar(20)
);
insert into course value
(1,1,2,"Yes"),
(2,1,3,"Yes"),
(3,2,1,"Yes"),
(4,3,2,"Yes"),
(5,1,2,"Yes")
select * from course;

在这里插入图片描述

select teacher_id,
case when week_day=1 then has_course else '' end mon,
case when week_day=2 then has_course else '' end tue,
case when week_day=3 then has_course else '' end tui,
case when week_day=4 then has_course else '' end tur,
case when week_day=5 then has_course else '' end fri
from course

在这里插入图片描述

case when x=1 then y 表示 当x列中有为1的值时 取出y列的同行值。

union :得到两个查询结果的并集,并且自动去掉重复行。不会排序
union 要求结构相同要求的是列数相同(在使用的时候要保证列数相同 有时会遇到需要填充的情况)

2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值