2016-11-15 84 views
0

我有一个表名table1的SQL转置枢轴? UNPIVOT?

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

,我想我的输出是:

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

随着模型中的列N是动态的。

任何想法?

+0

..... – scsimon

回答

1

您可以使用动态条件汇总:数百个这样的例子对SO

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;