You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SQL GROUP BY school_name实现行转列生成指定报表?

需求实现方案

源数据表

school_nameclassmediumtotal
srk1english13
srk2english14
srk3english15
srk1french16
srk2french16
srk3french18
vrk1english17
vrk1french18

目标输出结构

school_nameclass1engclass1frenchclass2engclass2frenchclass3englishclass3french

实现SQL语句

通过条件聚合可以实现行转列的需求,具体SQL如下:

SELECT
    school_name,
    MAX(CASE WHEN class = 1 AND medium = 'english' THEN total END) AS class1eng,
    MAX(CASE WHEN class = 1 AND medium = 'french' THEN total END) AS class1french,
    MAX(CASE WHEN class = 2 AND medium = 'english' THEN total END) AS class2eng,
    MAX(CASE WHEN class = 2 AND medium = 'french' THEN total END) AS class2french,
    MAX(CASE WHEN class = 3 AND medium = 'english' THEN total END) AS class3english,
    MAX(CASE WHEN class = 3 AND medium = 'french' THEN total END) AS class3french
FROM
    your_table_name
GROUP BY
    school_name;

说明

  • 用CASE WHEN匹配每行的class和medium组合,符合条件时返回对应total值,否则返回NULL
  • 借助MAX()聚合函数提取每个school_name下对应组合的有效total值(分组后每个组合仅存在一个非NULL值,MAX可直接获取该值)
  • 替换语句中的your_table_name为实际数据表名称

内容的提问来源于stack exchange,提问作者Parthiban Rathinam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 18:16:38