您可以通过PIVOT执行此操作。您可以使用知道要旋转的列数的静态PIVOT,也可以使用动态PIVOT
静态数据透视表(请参阅带有演示的SQL Fiddle)
SELECt *FROM ( select * from t1) xpivot( min(columnc) for columnb in ([X], [Y])) p
Dynamic Pivot(请参阅带有演示的SQL Fiddle)
DECLARE @cols AS NVARCHAr(MAX), @query AS NVARCHAr(MAX);select @cols = STUFF((SELECT distinct ',' + QUOTENAME(columnb) from t1 FOR XML PATH(''), TYPE ).value('.', 'NVARCHAr(MAX)') ,1,1,'')set @query = 'SELECt columna, ' + @cols + ' from ( select * from t1 ) x pivot ( min(ColumnC) for ColumnB in (' + @cols + ') ) p 'execute(@query)这两个版本将提供相同的结果。当您要转换的列数未知时,第二个方法起作用。



