Этот тип преобразования данных называется UNPIVOT
. К сожалению, у MySQL нет функции univot, но вы можете реплицировать функциональность несколькими различными способами.
Вы можете использовать UNION ALL
запрос для преобразования значения каждого столбца в строки:
select member, dos, dx, seq
from
(
select member, dos, dx1 as dx, 'Dx1' as seq
from yourtable
union all
select member, dos, dx2 as dx, 'Dx2' as seq
from yourtable
union all
select member, dos, dx3 as dx, 'Dx3' as seq
from yourtable
union all
select member, dos, dx4 as dx, 'Dx4' as seq
from yourtable
union all
select member, dos, dx5 as dx, 'Dx5' as seq
from yourtable
) d
where dx is not null
order by member, seq;
См SQL Fiddle with Demo. Этот метод даст вам результат, но он может быть не очень эффективным для больших таблиц.
Другой метод будет использовать Перекрестное соединение на виртуальной таблице:
select member, dos, dx, seq
from
(
select t.member, t.dos,
case s.seq
when 'Dx1' then dx1
when 'Dx2' then dx2
when 'Dx3' then dx3
when 'Dx4' then dx4
when 'Dx5' then dx5
end DX,
s.seq
from yourtable t
cross join
(
select 'Dx1' as seq union all
select 'Dx2' as seq union all
select 'Dx3' as seq union all
select 'Dx4' as seq union all
select 'Dx5' as seq
) s
) d
where dx is not null
order by member, seq;
См SQL Fiddle with Demo. Оба дают результат:
| MEMBER | DOS | DX | SEQ |
|--------|---------------------------------|-------|-----|
| 12345 | January, 01 2011 00:00:00+0000 | 12142 | Dx1 |
| 12345 | January, 01 2011 00:00:00+0000 | 12345 | Dx2 |
| 12345 | January, 01 2011 00:00:00+0000 | 65657 | Dx3 |
| 12345 | January, 01 2011 00:00:00+0000 | 5657 | Dx4 |
| 12345 | January, 01 2011 00:00:00+0000 | 568 | Dx5 |
Это не очень хорошо проявилось. Мои данные текущие, где Dx1, Dx2 и т. Д. Являются столбцами - мне нужны они, чтобы быть строками, а Seq говорит мне, какой Dx # это. Спасибо. – user3127999
@TastySpaceApple: почему тег mongodb? –
Итак, это 3 документа monngo, которые вы хотите конвертировать, в этом случае 12? используют какой-либо конкретный язык? или это консоль монго? – xcorat