mysql数据库中 多表联合查询 怎么 把一列中的数据 查询展示成多列进行展示

Mr_ZhangAdd 2018-06-01 06:23:25
有一个课程表subject表

还有一个学生成绩表achievement 学生表 的 sub_id 中对应 课程表subject中的 id

现在 要将 课程名subName 中的 实心球 跳远 跳绳 展示成 三列 并且取 学生成绩表achievement 中各个科目最高的成绩 怎么展示
...全文
2274 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fuduhuinew 2018-12-19
  • 打赏
  • 举报
回复
这种需求你应该用程序分步实现
  • 打赏
  • 举报
回复
mysql> use test; mysql> create table subject(id int,subname varchar(20)); mysql> insert into subject values(1,'跳绳'),(2,'实心球'),(3,'跳远'); mysql> create table archivement(id int,number int,studentid int,sub_id int,fraction int); insert into archivement values(1,1001,1,1,50); insert into archivement values(2,1002,1,1,60); insert into archivement values(3,1003,1,1,60); insert into archivement values(4,1004,1,2,10); insert into archivement values(5,1002,1,2,40); insert into archivement values(6,1002,1,2,55); insert into archivement values(7,1002,1,3,99); insert into archivement values(8,1002,1,3,79); insert into archivement values(9,1002,1,3,70); select bb.studentid,max(case bb.subname when '跳绳' then bb.fs end) as'跳绳', max(case bb.subname when '实心球' then bb.fs end) as '实心球', max(case bb.subname when '跳远' then bb.fs end) as '跳远' from ( SELECT b.studentid, -- b.sub_id, a.subname, max(b.fraction ) fs FROM archivement b, SUBJECT a WHERE a.id = b.sub_id GROUP BY b.studentid, b.sub_id ) bb group by bb.studentid
x_xf 2018-12-11
  • 打赏
  • 举报
回复
之前用润乾集算器写SPL语句做过列转行,你可以试试,使用挺简单的。
转换前:
转换后:
网格语句大概是这样写的:
A1:=file("E:/test.xlsx").xlsimport@t()
A2:=A1.pivot(CLASS,STUDENTID;SUBJECT,SCORE;"English":"ENGLISH","Math","PE")
guangMr 2018-12-04
  • 打赏
  • 举报
回复
SELECT
	s.subName 科目,
	( SELECT MAX( fraction ) FROM achievement WHERE sub_id = s.id ) 最高成绩
FROM
	SUBJECT AS s;
Rotel-刘志东 2018-07-12
  • 打赏
  • 举报
回复
行转列操作。
MW_long 2018-07-12
  • 打赏
  • 举报
回复
实心球 跳远 跳绳 展示成 三列 ? 这三个设成 列名, 然后对应的最大分数 是列值 是吧?
Mr_ZhangAdd 2018-06-01
  • 打赏
  • 举报
回复
学生成绩表achievement 中的 fraction 是分数

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧