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
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
Вы не можете создавать динамические столбцы в 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
спасибо u. необходимо перечислить дубликаты данных в столбце. мы можем попробовать в хранимой процедуре – user2587477
искать дубликаты, которые вы можете добавить после GROUP BY ..., HAVING count (*)> 1 – Marek
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;
Это называется сводной таблице, но вы не может сделать это в вашем примере, потому что у вас нет четких критериев, для которых значение принадлежит столбцу. «Первая» не имеет смысла в реляционной базе данных, потому что множества не имеют неявного порядка. –