Mysql如何行列互换???

2019-11-11  本文已影响0人  MayerBin
image.png

需求:行列互换

请用一条SQL语句查询出这三条记录并按以下条件显示出来
大于等于80表示优秀,大于等于60表示及格, 小于60分表示不及格

显示方式如下

image.png

直接放代码:

# 创建视图好处理点哈哈哈
create view g as
(SELECT
    MAX( CASE WHEN t.`subject` = "语文" THEN 评分 ELSE 0 END ) 语文,
    MAX( CASE WHEN t.`subject` = "数学" THEN 评分 ELSE 0 END ) 数学,
    MAX( CASE WHEN t.`subject` = "英语" THEN 评分 ELSE 0 END ) 英语 
FROM
    (
    SELECT
        test.`subject`,
        ( CASE WHEN test.score >= 80 THEN "优秀" 
         WHEN test.score >= 60 THEN "及格" ELSE "不及格" END ) 评分 
    FROM
        test 
    GROUP BY
    test.`subject` 
    ) t)
    
image.png

新需求:如何换回来??

SELECT '语文' as 'subject' , 语文 as score from g
UNION
SELECT '数学' as 'subject' , 数学 as score from g
UNION
SELECT '英语' as 'subject' , 英语 as score from g
image.png
上一篇 下一篇

猜你喜欢

热点阅读