Mysql實現行列轉換

jopen 9年前發布 | 13K 次閱讀 MySQL 數據庫服務器

 

前言:

最近又玩起了sql 語句,想著想著便給自己出了一道題目:“行列轉換”。起初瞎折騰了不少時間也上網參考了一些博文,不過大多數是采用 oracle 數據庫當中的一些便捷函數進行處理,比如 ”pivot”。那么,在 Mysql 環境下如何處理?

自己舉了個小例子:

Mysql實現行列轉換

sql 代碼實現:

-- Step1:建表并插入數據

-- Step2:中間轉換,即“二維轉一維”得到一維表。

-- Step3:利用IF判斷并“group by”即可得到目標結果表。



-- 加載

use test;

create table score (

name varchar(11),

Math int,

English int

);

insert into score values('甲',89,78);

insert into score values('乙',77,81);

insert into score values('丙',87,98);



-- 查詢生成目標表

SELECT

c2 AS '課程',

SUM(IF(c1='甲',c3,0)) AS '甲',

SUM(IF(c1='乙',c3,0)) AS '乙',

SUM(IF(c1='丙',c3,0)) AS '丙' from(

select name as c1,'Math' as c2,Math as c3 from score group by name

Union 

select name,'English' as c2,English from score group  by name

) AS tx group by c2;

結語:

   目前為止,個人尚未發現Mysql當中存在可以便捷將表格行列快速轉換的函數。以上只是個人的一點小嘗試,歡迎有更好解法的朋友批評指正!

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!