Sql server MS SQL将行转换为列
我需要把表从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你可以旋转: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你可
假设你需要去动态
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