关于列转行的sql语句编写求助

图片说明

用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;

自己搞定了
图片说明