2014-09-30 4 views
0

У меня есть таблица в mysql (скажем, studentinfo).MySql Группа от Pivot

SELECT * FROM StudentInfo; 

enter image description here

Я хочу следующий вывод без использования каких-либо дополнительных или временную таблицу. (Может быть, с помощью группы по и поворота)

enter image description here

+1

Что вы пытались достичь желаемого выхода? Измените свой вопрос с помощью своей попытки. –

+0

Я смутился, чтобы объединить группу и поворот, и я застрял там сам. – Nageswaran

ответ

0

Вам нужно создать сводную таблицу, вот link с большим количеством хороших примеров.

По сути, ваш только собираюсь сделать что-то вроде этого

SELECT Rollnumber, 
     property 
     CASE WHEN Property="Name" then Property end as Name, 
     CASE WHEN Property="Year" then Property end as Year, 
     CASE WHEN Property="City" then Property end as City, 
FROM whatever_table 
GROUP BY Rollnumber 

Вы можете изменить это, однако, вы хотите, чтобы получить результаты, которые вы хотите.

0

Это должно делать то, что вы хотите:

select si.Rollnumber, 
     max(case when si.Property = 'Name' then si.Value end) as Name, 
     max(case when si.Property = 'Year' then si.Value end) as Year, 
     max(case when si.Property = 'City' then si.Value end) as City 
from StudentInfo si 
group by si.Rollnumber; 
0

Попробуйте ниже:

 select * from (SELECT A.Rollnumber,if(A.Property='Name',Value, 
     (select B.Value from StudentInfo B where B.Property='Name' and B.Rollnumber=A.Rollnumber LIMIT 1)) as Name, 
     if(Property='Year',Value, 
     (select B.Value from StudentInfo B where B.Property='Year' and B.Rollnumber=A.Rollnumber LIMIT 1)) as Year, 
     if(Property='City',Value, 
     (select B.Value from StudentInfo B where B.Property='City' and B.Rollnumber=A.Rollnumber LIMIT 1)) 
     as City 
     FROM StudentInfo A) Temp group by Rollnumber 
+0

@ Surendhar, это сработает для вас? –

0
SELECT 
    name.rollnumber, 
    name.value AS name, 
    year.value AS year, 
    city.value AS city 
FROM 
    StudentInfo name 
    INNER JOIN StudentInfo year ON name.rollnumber = year.rollnumber 
    INNER JOIN StudentInfo city ON name.rollnumber = city.rollnumber  
WHERE 
    name.property = 'name' AND 
    year.property = 'year' AND 
    city.property = 'city' AND