前言:
最近又玩起了sql語句,想着想着便給自己出了一道題目:“行列轉換”。起初瞎折騰了不少時間也上網參考了一些博文,不過大多數是采用oracle數據庫當中的一些便捷函數進行處理,比如”pivot”。那么,在Mysql環境下如何處理?
自己舉了個小例子:
sql代碼實現:
1 -- Step1:建表並插入數據 2 3 -- Step2:中間轉換,即“二維轉一維”得到一維表。 4 5 -- Step3:利用IF判斷並“group by”即可得到目標結果表。 6 7 8 9 -- 加載 10 11 use test; 12 13 create table score ( 14 15 name varchar(11), 16 17 Math int, 18 19 English int 20 21 ); 22 23 insert into score values('甲',89,78); 24 25 insert into score values('乙',77,81); 26 27 insert into score values('丙',87,98); 28 29 30 31 -- 查詢生成目標表 32 33 SELECT 34 35 c2 AS '課程', 36 37 SUM(IF(c1='甲',c3,0)) AS '甲', 38 39 SUM(IF(c1='乙',c3,0)) AS '乙', 40 41 SUM(IF(c1='丙',c3,0)) AS '丙' from( 42 43 select name as c1,'Math' as c2,Math as c3 from score group by name 44 45 Union 46 47 select name,'English' as c2,English from score group by name 48 49 ) AS tx group by c2; 50 51 52
結語:
目前為止,個人尚未發現Mysql當中存在可以便捷將表格行列快速轉換的函數。以上只是個人的一點小嘗試,歡迎有更好解法的朋友批評指正!