Sql server MS SQL将行转换为列

Sql server MS SQL将行转换为列,sql-server,pivot,Sql Server,Pivot,我需要把表从A转换成B。 我可以通过多次加入同一个表并使用Max操作符来分配字段来让它工作,但是有没有更好的方法来实现这一点,因为Max操作符可能会导致大型表上的性能问题。 这可以通过使用pivot来实现吗?它会不会在巨大的表上导致任何性能问题? 顺便说一句,下面示例中的ID仅为示例中的一个字段,还有其他字段需要实现相同的功能 A 类ID 1 11 1 12 1 13 2 11 2 12 2 13 B 类别ID2 ID3 ID4 1 11 12 13 2 11 12 13你可

我需要把表从A转换成B。 我可以通过多次加入同一个表并使用Max操作符来分配字段来让它工作,但是有没有更好的方法来实现这一点,因为Max操作符可能会导致大型表上的性能问题。 这可以通过使用pivot来实现吗?它会不会在巨大的表上导致任何性能问题? 顺便说一句,下面示例中的ID仅为示例中的一个字段,还有其他字段需要实现相同的功能

A 类ID 1 11 1 12 1 13 2 11 2 12 2 13

B 类别ID2 ID3 ID4 1 11 12 13 2 11 12 13

你可以旋转:


假设你需要去动态

Declare @SQL varchar(max) = Stuff((Select Distinct ',' + QuoteName(concat('ID',1+Row_Number() over (Partition By Class Order By ID))) From YourTable  Order by 1 For XML Path('')),1,1,'') 
Select  @SQL = '
Select [Class],' + @SQL + '
From (
       Select [Class]
             ,ID
             ,Col = concat(''ID'',1+Row_Number() over (Partition By [Class] Order By [ID]))
         From YourTable 
     ) A
 Pivot (max(ID) For [Col] in (' + @SQL + ') ) P'
Exec(@SQL);
返回

Class   ID2 ID3 ID4
1       11  12  13
2       11  12  13

在这个网站上有很多把行变成列的例子。你研究并尝试了什么?你搜索过PIVOT还是其他东西吗?他到处都在动态地旋转:@Prdp:有些人只需要一个跳跃式的开始。
Class   ID2 ID3 ID4
1       11  12  13
2       11  12  13