尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

SQL 行转列(经典面试题)

发布时间:2026/11/13 23:48:41

资讯中心
01
ARTICLE

SQL 行转列(经典面试题)

SQL 行转列(经典面试题)
已知条件1. 学生表字段为 学号和姓名2. 课程表字段为科目ID和科目名称3. 成绩表 字段为学生学号科目ID成绩现要得到如下查询结果解答1. 先对score 表进行行转列将科目名称作为列名成绩作为数据进行展示。select sid, max(case when cid 1 then score else 0 end ) as 语文, max(case when cid 2 then score else 0 end ) as 数学, max(case when cid 3 then score else 0 end ) as 英语 from score group by sid得到的结果如下其中 max 函数配合case when使用例如当cid1时取score其他科目成绩设为0再取最大值就得到了语文成绩的值最后将列命名为 语文以此类推。group by sid 是要以学生学号进行分组否则只能查出一条数据。2. 得到上一步的结果后其实很容易就想到再连接学生表查询即可select stu.sid, stu.sname, max(case when cid 1 then score else 0 end ) as 语文, max(case when cid 2 then score else 0 end ) as 数学, max(case when cid 3 then score else 0 end ) as 英语 from score sco left join student stu on stu.sid sco.sid group by sid最终得到要求的结果补充查询出 语文成绩高于数学成绩的记录select stu.sid, stu.sname, max(case when cid 1 then score else 0 end ) as 语文, max(case when cid 2 then score else 0 end ) as 数学, max(case when cid 3 then score else 0 end ) as 英语 from score sco left join student stu on stu.sid sco.sid group by sid having 语文 数学此处使用 having 对分组后的数据进行过滤。得到如下结果
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。