2016-02-04 3 views
-2

У меня есть таблица T1 как:ROW на колонку транспонирования имен столбцов

enter image description here

мне нужно перенести таблицу как:

enter image description here

пользователя нужно изменить столбец к строке стоимость

Я попробовал использовать нижеследующий отчет

select name, id, 'jan' as month, jan as value           
union 
select name, id, 'feb' as month, feb as value 
union 
select name, id, 'mar' as month, mar as value 
union 
select name, id, 'apr' as month, apr as value 
union 
select name, id, 'may' as month, may as value 

Но будет ли это работать при обработке каждой записи в 12 записях?

Есть ли лучший способ сделать это?

+0

Вы должны были сохранить данные, подобные этому, с самого начала. (Но, полагаю, вы уже это знаете.) Здесь вы можете сделать «UNION ALL», возможно, выполните немного быстрее. – jarlh

+0

Это было интервью, чтобы перенести строку в столбец из названия столбца для каждой записи в 12 записей. можно убрать изображения для t1 и t2 –

+0

Примеры данных в тексте всегда лучше, чем изображения. – jarlh

ответ

2

Unpivot - это то, что вы ищете. У меня нет способа проверить результат прямо сейчас, но решение должно выглядеть следующим образом:

select * from test_table 
unpivot 
(
    value for month in (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec) 
) order by name, id 
+0

спасибо, его работа –

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