【Mysql】行轉列合併字段

數據表: 

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

max---聚合函數 取最大值

(case course when '語文' then score else end---判斷

 as 語文---別名作爲列名

 

 

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_concat(course,”:”,”score”)

 

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

 

group_concat(),手冊上說明:該函數返回帶有來自一個組的連接的非NULL值的字符串結果。
比較抽象,難以理解。

通俗點理解,其實是這樣的:group_concat()會計算哪些行屬於同一組,將屬於同一組的列顯示出來。要返回哪些列,由函

數參數(就是字段名)決定。分組必須有個標準,就是根據group by指定的列進行分組。

group_concat函數應該是在內部執行了group by語句,這是我的猜測。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章