但列名不固定时:
Create Proc P_ColumnTurn
as
begin
declare @strsql nvarchar(4000)
declare @ColumnNames nVARCHAR ( 3000)
set @strsql = 'select * from 销售表 A
PIVOT(SUM(销售额)
FOR 客户编号
IN ({0})) as t'
set @ColumnNames = (select '[' +客户编号 + '],' from 销售表 for xml path(''))
SET @ColumnNames= LEFT( @ColumnNames, LEN ( @ColumnNames)- 1)--去掉多余出来的逗号
SET @strsql= REPLACE ( @strsql, '{0}' , @ColumnNames)
exec(@strsql)
end
go
列名固定时
Create Proc P_ColumnTurn
as
begin
declare @strsql nvarchar(4000)
declare @ColumnNames nVARCHAR ( 3000)
set @strsql = 'select * from 销售表 A
PIVOT(SUM(销售额)
FOR 客户编号
IN ([客户1],[客户2],[客户3])) as t'
exec(@strsql)
end
go