--行转列小实例
--创建测试表
if object_id(N"test", N"U") is not null
drop table test
go
with PivotTable as
(
select "xxx" as czy, "点赞" as czlx, 2 as num
union all
select "xxx", "浏览" as czlx, 14 as num
union all
select "yyy", "浏览" as czlx, 10 as num
union all
select "zzz", "浏览", 30
union all
select "zzz", "点赞", 3
)
select * into test from PivotTable
go
--创建存储过程
if exists(select name from sysobjects where name = "usp_GetPivotInfo")
drop proc usp_GetPivotInfo
go
create proc usp_GetPivotInfo
as
declare @czlx varchar(500),
@SQL varchar(2000)
select @czlx = stuff((select distinct ",[" + czlx + "]" from test for xml path ("")),1,1,"")
--select @czlx
set @SQL = "select czy, {#} from test pivot(sum(num) for czlx in ({#})) as T";
set @SQL = replace(@SQL, "{#}", @czlx);
exec(@SQL);
go
exec usp_GetPivotInfo ;