虽然我需要将行转置为列,但如果它只是将行转换为列或列转换为行,我可以这样做。
我的数据表。
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..
有人知道怎么做吗?非常感谢!!!
答案 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
...为其他月份添加列。