发布网友 发布时间: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
如有疑问,及时沟通!