2016-11-15 2 views
0

У меня есть имя таблицы Table1SQL Transpose Pivot? UNPIVOT?

Partnumber | Model  
12345  | A1  
12345  | B2  
12345  | C3 

Я хотел бы мой выход будет:

Partnumber | Model1 | Model2 | Model3  
12345  | A1  | B2  | C3 

С столбцами модели N, являющимися динамической.

Любые идеи?

+0

Сотни примеров этого на SO ..... – scsimon

ответ

1

Вы можете использовать динамический условную агрегацию:

DECLARE @sql NVARCHAR(MAX) = N''; 

SELECT @sql = 
'SELECT 
    PartNumber' + CHAR(10) + 
    STUFF((
     SELECT DISTINCT 
      ' ,MAX(CASE WHEN Model = ''' + Model + ''' THEN Model END) AS ' + QUOTENAME(Model) + CHAR(10) 
     FROM Tbl 
     FOR XML PATH('') 
    ), 1, 0, '') + 
'FROM Tbl 
GROUP BY PartNumber;'; 

PRINT @sql; 
EXEC sp_executesql @sql; 
Смежные вопросы