2015-06-14 1 views
2

У меня есть следующая структура таблицы в SQL (с помощью T-SQL): sqlfiddle: http://sqlfiddle.com/#!6/e5edc/1/0T-SQL, используя как использовать функцию PIVOT

Эти данные будут выглядеть примерно так:

enter image description here

Теперь я хотел бы перенести структуру таким образом, я получаю следующее:

  • колонны [01_amount] к [12_amount] и столбцов [01_active] т о [12_active] в виде строк вместо колонн
  • Все строки [инициалов], чтобы быть отдельные столбцы

должен выглядеть следующим образом:

enter image description here

Как будет идти об этом ? Функция Pivot выглядит довольно сложно, поскольку я новичок в SQL. Может ли кто-нибудь помочь мне в правильном направлении? :-)

+0

Вы будете удивлены, но вы должны первым UNPIVOT, а затем поворота. Дайте нам несколько sqlfiddle для работы. –

+0

Хорошо - работаем над этим! –

ответ

2

Хорошо, вам нужно будет сначала отключить ваши данные, что делается в cte. Затем вам нужно будет снова поворот:

;with cte as(select initials, v, col from main 
unpivot(v for col in([01_amount], [02_amount])) u) 
select * from cte 
pivot(max(v) for initials in([rw],[nb]))p 

В UNPIVOT части просто добавить все 24 имен столбцов для сумм и активных битов. В сводной части просто добавьте все возможные значения для инициалов.

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

Вот демо 2 столбца и вы легко расширить его http://sqlfiddle.com/#!6/4cf36/2

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