用java实现吗?你能实现其中一个吗?
我没弄明白你是什么意思?是要单独实现两种形式?还是怎么要转换? 如果要实现两种形式的话 只要实现其中一种 另一种也是一样的;
select sname,java_Score
,case when java_Score>javaavg then '优秀' when java_Score=javaavg then '及格' else '不及格' end java_grade
,mysql_Score
,case when mysql_Score>mysqlavg then '优秀' when mysql_Score=mysqlavg then '及格' else '不及格' end mysql_grade
from(
(select sname,java_Score,case when
select sname,sum(case sourse when 'java' then score end ) java_Score,
,sum(case sourse when 'mysql' then score end ) mysql_Score from 表
group by sname) a
,(select avg(score) javaavg from 表 where course='java' group by course) b
,(select avg(score) mysqlavg from 表 where course='mysql' group by course) c
)
大概就是上面这个意思
现在只能做到下面这一步
原表即问题中上表如下:
也可不用列转行;查到结果后union;
自己搞定了