如何转换列和主行?
TBL1
| p1 | p2 | p3 | ...
g1 | 1 | 2 | 3 | ...
g2 | 4 | 5 | 6 | ...
g3 | 7 | 8 | 9 | ...
预期结果
| g1 | g2 | g3 | ...
p1 | 1 | 4 | 7 | ...
p2 | 2 | 5 | 8 | ...
p3 | 3 | 6 | 9 | ...
如何使用tbl1
制作预期结果表答案 0 :(得分:0)
这是MySql中PIVOT表的概念。
在这里,我考虑了P1,P2和P3列,给出了问题的解决方案。看看这个SQL fiddle并了解它是如何工作的,之后你就可以自己做了。
SELECT TEMP,
MAX(CASE WHEN unit = 'G1' THEN value END) `G1`,
MAX(CASE WHEN unit = 'G2' THEN value END) `G2`,
MAX(CASE WHEN unit = 'G3' THEN value END) `G3`
FROM
(
SELECT unit, TEMP,
CASE TEMP
WHEN 'P1' THEN P1
WHEN 'P2' THEN P2
WHEN 'P3' THEN P3
END value
FROM tbl1 t CROSS JOIN
(
SELECT 'P1' TEMP UNION ALL
SELECT 'P2' UNION ALL
SELECT 'P3'
) c
) q
GROUP BY TEMP
ORDER BY FIELD(TEMP, 'P1', 'P2', 'P3')