sql - SQL 删除具有不同值的重复行,但将它们保留并显示在单行中
问题描述
有 8000 行,包括学生姓名、课程和成绩。总共有 4 门课程,因此这意味着每个学生最多有 4 行。所以我想创建一个包含不同学生姓名的表格,并在同一行显示不同的成绩,如下所示:
非常感谢。
PS。我从您最初的回复中注意到,这不是一件容易的事。那么我可以让表格只显示超过一个年级的学生,因为我对只有一个年级的学生不感兴趣吗?像这样:
解决方案
您可以进行条件聚合:
select name,
max(case when seq = 1 then Course end) as Course1,
max(case when seq = 1 then Grade end) as Course1Grade,
max(case when seq = 2 then Course end) as Course2,
max(case when seq = 2 then Grade end) as Course2Grade,
. . .
from (select *, row_number() over (partition by name order by course) as seq
from table
) t
group by name;
推荐阅读
- java - 将日期格式转换为 excel 友好格式,然后对其进行解析以转换日期
- sql - 如何将行名更新为 SQL 中两个表之间的列名
- html - 每次单击显示列按钮后,表格列的宽度都会增加
- javascript - 在单击按钮上打开当前手风琴,关闭其他使用 jqwery 动态打开的手风琴
- angular - 扫描后如何返回带有插入项的更新数组?
- java - 两个不同的查询返回相同的对象 Spring Boot JPA
- python - 在两个日期时间之间选择 xarray 数据集数据超出范围
- sql - 将列透视到行 PL/SQL
- javascript - how to sort and limit firebase realtime db v9?
- javascript - 如何使用循环在表中使用输入文本字段并获取reactjs中行选择的特定值