【发布时间】:2015-12-04 08:45:11
【问题描述】:
我正在寻找一种在 SQL Server 中将行转换为具有 动态列名 的列的有效方法。听说PIVOT不是很快,需要处理很多记录。
这是我的例子:
Id Name Type Address
----------------------------------
1 A Vendor Add1
2 B Vendor Add2
3 C Purchaser Add3
4 D Agent Add4
要求的结果:
Vendor Name Vendor Address Vendor 1 Name Vendor 1 Address Purchaser Name Purchaser Address Agent Name Agent Address
A Add1 B Add2 C Add3 D Add4
如果第一个值是供应商,如果第二次供应商来,我如何构建列名称将创建动态的结果,那么它将显示为供应商 1 + 名称或地址?
【问题讨论】:
-
Pivot 应该可以满足您的需求。
-
作为替代方案,您可以使用交叉表来执行此操作。交叉表的性能通常会优于 PIVOT,尤其是在行数增加时。 sqlservercentral.com/articles/T-SQL/63681
-
@GordonLinoff 我得到了将行转换为列的解决方案。但我希望列名应该是动态的...请咨询。
-
@SeanLange..... 如果值重复,是否可以使列名动态化?
-
@JatinGadhiya 当然。看一下交叉表的动态版本。 sqlservercentral.com/articles/Crosstab/65048
标签: sql sql-server stored-procedures view pivot