在Mysql中将行转换为列

时间:2013-12-13 07:18:51

标签: mysql

虽然我需要将行转置为列,但如果它只是将行转换为列或列转换为行,我可以这样做。

我的数据表。

Student|MONTH|Sub-1|Sub-2|Sub-3
Sunil  |JAN  | 46  |48   |55
Sunil  |APR  |33   |44   |55
Sunil  |JULY |23   |42   |92
Sunil  |OCT  |30   |40   |50
Anil   |JAN  |22   |33   |44
Anil   |JULY |13   |42   |92

和期望的输出。

Student|Sub-1|Sub-2|Sub-3|Sub-1|Sub-2|Sub-3|Sub-1|Sub-2|Sub-3|Sub-1|Sub-2|Sub-3
--------------------------------------------------------------------------------------
Stu1   |6    |48   |55   |33   |44   |55   |23   |42   |92   |30   |40   |50
Stu2   |22   |33   |44   |     |     |     |13   |42   |92   |98

etc..

有人知道怎么做吗?非常感谢!!!

1 个答案:

答案 0 :(得分:1)

您可以使用此解决方案(数据透视表) -

SELECT
  Student,
  MAX(IF(MONTH = 'JAN', `Sub-1`, NULL)) `JAN-Sub-1`,
  MAX(IF(MONTH = 'JAN', `Sub-2`, NULL)) `JAN-Sub-2`,
  MAX(IF(MONTH = 'JAN', `Sub-3`, NULL)) `JAN-Sub-3`,
  MAX(IF(MONTH = 'FEB', `Sub-1`, NULL)) `FEB-Sub-1`,
  MAX(IF(MONTH = 'FEB', `Sub-2`, NULL)) `FEB-Sub-2`,
  MAX(IF(MONTH = 'FEB', `Sub-3`, NULL)) `FEB-Sub-3`
FROM
  trans
GROUP BY
  student

...为其他月份添加列。

相关问题