首页 新闻 会员 周边 捐助

一道sql题目

0
悬赏园豆:15 [已解决问题] 解决于 2018-08-02 16:17

Yoooshiki的主页 Yoooshiki | 初学一级 | 园豆:3
提问于:2018-08-02 15:06
< >
分享
最佳答案
0

SELECT * FROM aaa /*数据源*/
P
PIVOT
(
SUM(id) FOR
p.bb/*需要行转列的列*/ IN ('语文','数学','英语','生物'/*列的值*/)
) AS T

收获园豆:15
^keepHungry$ | 小虾三级 |园豆:516 | 2018-08-02 15:24

你这个 PIVOTSQL Server 里的,我需要的是 MySQL

Yoooshiki | 园豆:3 (初学一级) | 2018-08-02 15:29

@Yoooshiki: 。。。。你也可以自己写一个函数 或者 用case when:

select name,
sum(case course when '语文' then score else 0 end) as 语文,
sum(case course when '数学' then score else 0 end) as 数学,
sum(case course when '英语' then score else 0 end) as 英语
from aaaa
group by name

^keepHungry$ | 园豆:516 (小虾三级) | 2018-08-02 15:33
其他回答(3)
0

不会.百度:sql行转列.

面试问sql行转列怎么写.我都回:不写sql

吴瑞祥 | 园豆:29449 (高人七级) | 2018-08-02 15:10
0

SELECT student,
SUM(CASE course WHEN '语文'THEN score END)AS '语文',
SUM(CASE course WHEN '数学'THEN score END)AS '数学',
SUM(CASE course WHEN '英语'THEN score END)AS '英语'
FROM Score GROUP BY student

徒然喜欢你 | 园豆:1741 (小虾三级) | 2018-08-02 16:16
0

select student as name,(select b.score from score b where a.student=b.student and b.course='语文') as '语文'
,(select b.score from score b where a.student=b.student and b.course='数学') as '数学'
,(select b.score from score b where a.student=b.student and b.course='英语') as '英语' from score a group by student

缪异之端 | 园豆:206 (菜鸟二级) | 2018-08-02 16:24

前提是你的 每个人每个科目的成绩唯一

支持(0) 反对(0) 缪异之端 | 园豆:206 (菜鸟二级) | 2018-08-02 16:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册