2013-07-16 2 views
-1
t_no name value 
1 a  45 
1 b  23 
1 c  5 
1 a  12 
1 b  99 
1 c  6 

Мне нужно, чтобы показать свою таблицу выше, какКак группировать повторены значения строк в столбце

no name value1 value2 
1 a 45  12 
1 b 23  99 
1 c 5  6 
+4

Это называется сводной таблице, но вы не может сделать это в вашем примере, потому что у вас нет четких критериев, для которых значение принадлежит столбцу. «Первая» не имеет смысла в реляционной базе данных, потому что множества не имеют неявного порядка. –

ответ

1

Вы не можете создавать динамические столбцы в MySQL самостоятельно, либо на языке сценариев, или вы можете использовать GROUP_CONCAT иметь их в одном столбце:

SELECT to_no, name, GROUP_CONCAT(value) 
    FROM table GROUP BY to_no, name 

результат:

no name value 
1 a 45,12 
1 b 23,99 
1 c 5,6 
+0

спасибо u. необходимо перечислить дубликаты данных в столбце. мы можем попробовать в хранимой процедуре – user2587477

+0

искать дубликаты, которые вы можете добавить после GROUP BY ..., HAVING count (*)> 1 – Marek

0

MySQL не имеет функцию поворота, но вы можете использовать агрегатную функцию с выражением CASE. Поскольку у вас есть несколько значений для каждого t_no и name, то вы можете использовать пользовательские переменные, чтобы присвоить номер строки для каждой группы значений:

select t_no, name, 
    max(case when rn=1 then value end) value1, 
    max(case when rn=2 then value end) value2 
from 
(
    select t_no, name, value, 
    @rn:=case when @prev=t_no and @c=name then @rn else 0 end +1 rn, 
    @prev:=t_no, 
    @c:=name 
    from yourtable 
    cross join (select @rn:=0, @prev:=0, @c:=null) c 
    order by t_no, name 
) d 
group by t_no, name 
order by t_no, name; 

См SQL Fiddle with Demo

Смежные вопросы