2017-02-22 2 views
0

У меня есть таблица в MySQL, который выглядит, как показано нижекоммутации строк и столбцов на основе определенного столбца в MySQL

**row  name  value** 
1   name1 value1 
1   name2 value2 
1   name3 value3 
2   name1 value4 
2   name2 value5 
2   name4 value6 
3   name1 value7 
3   name2 value8 
3   name3 value9 

Я хочу, чтобы вернуть данные в следующем формате.

**row  name1  name2  name3  name4** 
    1  value1 value2 value3  nil 
    2  value4 value5 nil  value6 
    3  value7 value8 value9  nil 

или я хочу JSON, который выглядит как:

{ 
{ 
    name1:value1, 
    name2:value2, 
    name3:value3, 
}, 
{ 
    name1:value4, 
    name2:value5, 
    name4:value6, 
}, 
{ 
    name1:value7, 
    name2:value8, 
    name3:value9, 
}, 
} 

Что может быть запрос? Есть ли другой способ достижения этого в рубине?

+0

, чтобы получить эту сводную информацию –

ответ

2

Для первого варианта, вы можете попробовать следующий запрос: шарнирный

SELECT row, 
     MAX(CASE WHEN name ='name1' THEN value END) AS name1, 
     MAX(CASE WHEN name ='name2' THEN value END) AS name2, 
     MAX(CASE WHEN name ='name3' THEN value END) AS name3, 
     MAX(CASE WHEN name ='name4' THEN value END) AS name4 
FROM yourTable 
GROUP BY row 
0
select row, 
     max(case when name ='name1' then value end) as name1, 
     max(case when name ='name2' then value end) as name2, 
     max(case when name ='name3' then value end) as name3, 
     max(case when name ='name4' then value end) as name4 
from table_name 
group by row 
Смежные вопросы