2015-01-26 4 views
2

Я хочу, чтобы преобразовать таблицу, как это:SQL Server расплющить таблицы иерархии

Parent Child Value 
1  Color Red 
1  Height 11 
1  Width 12 
1  Length 11 
2  Color Blue 
2  Height 10 
2  Width 2 
2  Length 5 

В это:

Parent Color Height Width Length 
1  Red  11  12  11 
2  Blue 10  2  5 

Ребенок атрибутов может измениться в любое время таким образом имея преобразованные столбцы динамически построенные будет Лучший.

+1

Есть бесчисленное множество вопросов и ответов об этом в SO, просто для поиска SQL-сервера и динамического поворота – Lamak

ответ

2

Используйте Conditional Aggregate транспонировать строки в колонке

select Parent, 
max(case when Child='Color' then Value End) 'Color', 
max(case when Child='Height' then Value End) 'Height', 
max(case when Child='Width' then Value End) 'Width', 
max(case when Child='Length' then Value End) 'Length' 
from yourtable 
group by Parent 
+0

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

+0

@RBarryYoung, это абсолютно правильно, +1 с моей стороны. – Shnugo