2013-12-17 6 views
0

Как преобразовать столбцы и первичные строки?Как перенести таблицу в Mysql

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

Поисковая фраза, которую вы ищете, представляет собой «сводную таблицу». См. Этот ответ: http://stackoverflow.com/questions/7674786/mysql-pivot-table –

+0

Сколько столбцов 'pX' у вас есть? – peterm

ответ

0

Это понятие сводной таблицы в MySql.

Здесь я дал решение вашей проблемы с учетом столбцов 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') 
Смежные вопросы