你可以这样
SELECt month, MAX(CASE WHEN unit = 'CS-1' THEN value END) `CS-1`, MAX(CASE WHEN unit = 'CS-2' THEN value END) `CS-2`, MAX(CASE WHEN unit = 'CS-3' THEN value END) `CS-3` FROM( SELECt unit, month, CASE month WHEN 'JAN' THEN jan WHEN 'FEB' THEN feb WHEN 'MAR' THEN mar WHEN 'APR' THEN apr WHEN 'MAY' THEN may WHEN 'JUN' THEN jun END value FROM table1 t CROSS JOIN ( SELECT 'JAN' month UNIOn ALL SELECT 'FEB' UNIOn ALL SELECT 'MAR' UNIOn ALL SELECT 'APR' UNIOn ALL SELECT 'MAY' UNIOn ALL SELECT 'JUN' ) c) q GROUP BY month ORDER BY FIELD(month, 'JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN')
输出:
| MonTH | CS-1 | CS-2 | CS-3 || ------- | ------ | ------ || ------ || 一月 100 | 111 | 331 || 2月| 200 | 222 | 123 || MAR | 300 | 333 | 423 || 年利率| 400 | 444 | 923 || 五月| 500 | 555 | 918 || 俊| 600 | 666 | 123 |
这是 SQLFiddle 演示


![MySql换行成列和列成行[重复] MySql换行成列和列成行[重复]](http://www.mshxw.com/aiimages/31/405272.png)
