MySQL行轉列與列轉行

行轉列

數據準備

建表:

CREATE TABLE `student` (
  `ID` int(10) NOT NULL AUTO_INCREMENT,
  `USER_NAME` varchar(20) DEFAULT NULL,
  `COURSE` varchar(20) DEFAULT NULL,
  `SCORE` float DEFAULT '0',
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

新增數據:

insert into student(USER_NAME, COURSE, SCORE)  values
("張三", "數學", 34),
("張三", "語文", 58),
("張三", "英語", 58),
("李四", "數學", 45),
("李四", "語文", 87),
("李四", "英語", 45),
("王五", "數學", 76),
("王五", "語文", 34),
("王五", "英語", 89);

源數據:

行轉列圖一
SELECT user_name ,
    MAX(CASE course WHEN '數學' THEN score ELSE 0 END ) 數學,
    MAX(CASE course WHEN '語文' THEN score ELSE 0 END ) 語文,
    MAX(CASE course WHEN '英語' THEN score ELSE 0 END ) 英語
FROM student
GROUP BY USER_NAME;

行轉列后:

行轉列圖二

列轉行

數據準備

建表:

CREATE TABLE `grade` (
  `ID` int(10) NOT NULL AUTO_INCREMENT,
  `USER_NAME` varchar(20) DEFAULT NULL,
  `CN_SCORE` float DEFAULT NULL,
  `MATH_SCORE` float DEFAULT NULL,
  `EN_SCORE` float DEFAULT '0',
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

新增數據:

insert into grade(USER_NAME, CN_SCORE, MATH_SCORE, EN_SCORE) values
("張三", 34, 58, 58),
("李四", 45, 87, 45),
("王五", 76, 34, 89);

源數據:

列轉行圖一.jpg
select user_name, '語文' COURSE , CN_SCORE as SCORE from grade
union select user_name, '數學' COURSE, MATH_SCORE as SCORE from grade
union select user_name, '英語' COURSE, EN_SCORE as SCORE from grade
order by user_name,COURSE;

列轉行后:

列轉行圖二.jpg
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 今天看到一位朋友寫的mysql筆記總結,覺得寫的很詳細很用心,這里轉載一下,供大家參考下,也希望大家能關注他原文地...
    信仰與初衷閱讀 4,840評論 0 30
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當在唯一索引所對應的列上鍵入重復值時,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 6,014評論 0 9
  • Oracle行轉列、列轉行的Sql語句總結 多行轉字符串這個比較簡單,用||或concat函數可以實現SQL Co...
    王滕輝閱讀 6,315評論 0 3
  • ·錯誤:1000 SQLSTATE: HY000 (ER_HASHCHK)消息:hashchk·錯誤:1001 S...
    Catke閱讀 1,716評論 0 2
  • 索引 數據庫中的查詢操作非常普遍,索引就是提升查找速度的一種手段 索引的類型 從數據結構角度分 1.B+索引:傳統(tǒng)...
    一凡呀閱讀 3,228評論 0 8

友情鏈接更多精彩內容