SQL转置枢轴?透视



我有一个表名table1

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

我希望我的输出是:

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

模型列N是动态的

任何想法?

您可以使用动态条件聚合:

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;

最新更新