MYSQL 多行轉多列


mysql 行變列(多行變成一行/多行合並成一行/多行合並成多列/合並行),我覺得這都是一個意思

數據庫結構如圖:


而我想讓同一個人的不同成績變成此人在這一行不同列上顯示出來,此時分為2中展現:

第一種展現如圖----【多行變一列】(合並后的數據在同一列上):


sql如下:

select name ,group_concat(sore Separator ';') as score from stu group by name 

第二種展現如圖----【多行變多列】(合並后的數據在不同列上):

sql如下:

SELECT name ,
MAX(CASE type WHEN '數學' THEN score ELSE 0 END ) math,
MAX(CASE type WHEN '英語' THEN score ELSE 0 END ) English ,
MAX(CASE type WHEN '語文' THEN score ELSE 0 END ) Chinese 
FROM stu  
GROUP BY name

----------------------------------------------------------------------------------------------------- 可愛的分割線 ----------------------------------------------------------------------------------------------------

當然,在第一種情況中(顯示在一列),也有些其他的類似形式:

形式一:

sql如下:

select name ,group_concat(type,'分數為:',score  Separator '; ') as score from stu group by name 


呵呵,當然 如果你很熟悉group_concat和concat的用法,你也做出如下形式:

其sql如下:

select name ,concat(name ,'的分數為[',group_concat(type,'分數為:',score  Separator '; '),']') as score from stu group by name 



原文
http://m.blog.csdn.net/article/details?id=50231435


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM