首页 > 代码库 > MySQL -- 行转列 -- GROUP_CONCAT -- MAX(CASE WHEN THEN)

MySQL -- 行转列 -- GROUP_CONCAT -- MAX(CASE WHEN THEN)

列转行:利用max(case when then)

技术分享

 

SELECT
    `name`,
    MAX(
        CASE 
        WHEN  course=语文 THEN
            score
        END
    ) AS 语文,
    MAX(
        CASE 
        WHEN course=数学 THEN
            score
        END
    ) AS 数学, 
    MAX(
        CASE 
        WHEN course=英语 THEN
            score
        END
    ) AS 英语
FROM
    student
GROUP BY `name`
;

 技术分享

合并字段显示:利用group_cancat(course,”:”,”score”)

SELECT
    `name`,
    GROUP_CONCAT(course, ":", score) AS 成绩
FROM
    student
GROUP BY
    `name`;

技术分享

 -- -- -- -- -- -- -- --- - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- - -- -- -- -- -- -- -- -- -- -- -- -- -

-- 合并字段显示 : 去重、排序
SELECT rid,GROUP_CONCAT(DISTINCT gid ORDER BY gid)
FROM gt_lighting.res_lights
GROUP BY rid;

技术分享

 

啦啦啦

MySQL -- 行转列 -- GROUP_CONCAT -- MAX(CASE WHEN THEN)