查询所有人两个科目的等级,显示的是下面这张表的


用户50636515 发布于 2020-9-27 16:11
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
圣体叶小凡Lv6高级互助
发布于2021-4-29 15:38

先行转列,然后你再 case when判断a,b,c;

select NAME ,

case when English >=90 then 'A' when English>=80 and English <90 then 'B' else 'C'  end as English,

case when English >=90 then 'A' when Math>=80 and Math <90 then 'B' else 'C'  end as Math,

case when English >=90 then 'A' when French>=80 and French <90 then 'B' else 'C'  end as French,

case when English >=90 then 'A' when Chemistry>=80 and Chemistry <90 then 'B' else 'C'  end as Chemistry 

 from (

SELECT  

    t1.NAME,  

    MAX( CASE t1.course WHEN 'English' THEN t1.GRADE ELSE 0 END ) English,  

    MAX( CASE t1.course WHEN 'Math' THEN t1.GRADE ELSE 0 END ) Math,

    MAX( CASE t1.course WHEN 'French' THEN t1.GRADE ELSE 0 END ) French,

    MAX( CASE t1.course WHEN 'Chemistry' THEN t1.GRADE ELSE 0 END ) Chemistry

FROM  

    STSCORE t1  

GROUP BY  

    t1.NAME

) a 

最佳回答
0
指间沙Lv6中级互助
发布于2020-9-27 16:22(编辑于 2020-9-27 16:23)

你把创建表sql导出来给我

image.png

最佳回答
0
sayLv6初级互助
发布于2020-9-27 16:36(编辑于 2020-9-27 16:37)

select a.studentno,a.name ,case when a.course='english' then a.flevel else ''end as english,case when a.course='french' then a.flevel else ''end as french from (select studentno,name,courses,case when grade >=90 then 'A' case when grade >=80 and grade<90then'B'else 'C'end as FLEVEL ) from 表)a

  • 4关注人数
  • 580浏览人数
  • 最后回答于:2021-4-29 15:38
    请选择关闭问题的原因
    确定 取消
    返回顶部