将表列内容横向展示

表结构:

姓名 课程 分数
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94

转化结果:

姓名 语文 数学 物理 平均分 总分
张三 74 83 93 83.33 250
李四 74 84 94 84.00 252

sql实现:

SELECT
    t.student AS '姓名',
    max(
        CASE
        WHEN course_name = '语文' THEN
            '分数'
        ELSE
            0
        END
    ) AS '语文',
    max(
        CASE
        WHEN course_name = '数学' THEN
            '分数'
        ELSE
            0
        END
    ) AS '数学',
    max(
        CASE
        WHEN course_name = '物理 ' THEN
            '分数'
        ELSE
            0
        END
    ) AS '物理 ',
    cast(avg(t.score) as decimal(18,2)) AS '平均分',
    sum(t.score) AS '总分'
FROM
    course t
GROUP BY
    t.student
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容