SQL怎样同时查询多个学生多个科目的成绩?

发布网友 发布时间:2022-04-25 05:41

我来回答

6个回答

热心网友 时间:2022-04-10 14:54

这个用到行转列

SELECT
`姓名编号`,    MAX(        CASE
WHEN  course='项目1' THEN
"内容"        END
) AS '项目1',    MAX(        CASE
WHEN course='项目2' THEN
"内容"        END
) AS '项目2',
MAX(        CASE
WHEN course='项目3' THEN
"内容"        END
) AS '项目3' FROM
studentGROUP BY `姓名编号`

你可以参考下网站:网页链接

热心网友 时间:2022-04-10 16:12

首先,确保每个项目只有一项内容
select
姓名编号,
(select max(内容) from 成绩表 b where a.姓名编号=b.姓名编号 and b.项目名称='项目1') 内容1,
(select max(内容) from 成绩表 b where a.姓名编号=b.姓名编号 and b.项目名称='项目2') 内容2,
......
from 成绩表 a追问你这回答没头没尾,劣者看不懂啊

追答如果给的表是成绩表(编号,项目,内容),假设成绩表里面的内容有
1,项目1,内容1
1,项目2,内容2
那么语句就写成
select
distinct 姓名编号,
(select max(内容) from 成绩表 b where a.姓名编号=b.姓名编号 and b.项目名称='项目1') 内容1,
(select max(内容) from 成绩表 b where a.姓名编号=b.姓名编号 and b.项目名称='项目2') 内容2
from 成绩表 a
就行了,
那么结果就是
1,内容1,内容2
有几个项目名称就加几条select max

热心网友 时间:2022-04-10 17:46

SELECT * FROM table AS P
PIVOT
( SUM(成绩分数) FOR
p.科目名称 IN (科目1,……科目N)
) AS T

select 姓名,
max(case when 科目='语文' then 分数 end) as 语文,
max(case when 科目='数学' then 分数 end) as 数学,
max(case when 科目='英语' then 分数 end) as 英语
from 表名 group by 姓名
仅供参考!

热心网友 时间:2022-04-10 19:38

SELECT * FROM table AS P
PIVOT
( SUM(成绩分数) FOR
p.科目名称 IN (科目1,……科目N)
) AS T

热心网友 时间:2022-04-10 21:46

SELECT * FROM table AS b
PIVOT
( SUM(成绩分数) FOR
b.科目名称 IN (科目1,……科目N)
) AS a

select 姓名,
max(case when 科目='语文' then 分数 end) as 语文,
max(case when 科目='数学' then 分数 end) as 数学,
max(case when 科目='英语' then 分数 end) as 英语
from 表名 group by 姓名

热心网友 时间:2022-04-11 00:10

select * from 
   table as p
  pivot
    (sum(成绩分数) for p.科目名称   in(科目1,科目2,科目3..科目N)  )
  as T

如有疑问,及时沟通!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com