2016-01-07 3 views
-1

Ищете способ преобразования столбцов в строки в sql-сервере.Преобразование столбцов в строки по ID

У меня есть таблица со столбцами ниже:

[ID] [Action] [Note] [Resolution] 

Вот что я хочу получить в результате с колоннами: [ID] [Notes] И значение результата будет:

'1' 'Action1' 
'1' 'Note1' 
'1' 'Resolution1' 
'2' 'Action2' 
'2' 'Note2' 
'2' 'Note2.1' 
'2' 'Resolution2' etc 

Любые идеи, как я мог бы это сделать в T-SQL? Также для поля примечания может быть несколько записей. Благодаря!

+0

Что вы хотите знать как 'univot'. Здесь есть несколько вопросов, объясняющих это, а также руководство. – jpw

+0

В частности, для меня не ясны «множественные записи заметок»: пожалуйста, предоставьте реалистичные данные образца и ожидаемый результат – Shnugo

+0

Спасибо за ваши ответы. Для заметок в исходной таблице [id] может быть в таблице с тем же действием и разрешением, но с разными данными для заметок. Таким образом, несколько строк с одинаковым идентификатором, действием и разрешением. Поэтому я хочу преобразовать их в строки, сгруппированные по id с помощью Actions, затем любые заметки и затем разрешение. – rory83

ответ

1

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

-- select * from t: 
ID Action Note Resolution 
--- ------- ------- ----------- 
1 Action1 Note1 Resolution1 
2 Action2 Note2 Resolution2 
2 Action2 Note2.1 Resolution2 

Этот запрос:

select distinct id, notes 
from (select * from t) as source 
unpivot (notes for ids in ([action], [note], [resolution]) 
) as unpivotted_table 

будет производить этот результат:

id notes 
--- ------ 
1 Action1 
1 Note1 
1 Resolution1 
2 Action2 
2 Note2 
2 Note2.1 
2 Resolution2 

, который выглядит очень нравится, что вы просят.

Дополнительную информацию о том, как работает оператор unpivothere.

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