Sql 存储过程中的动态透视

Sql 存储过程中的动态透视,sql,sql-server,pivot,Sql,Sql Server,Pivot,此过程的语法错误是什么 这是一个错误:关键字“select”附近的语法不正确。 @cols return[B]、[C]、[H]但我不明白@q打印$q有什么不对?如果是的话,你能发布那篇文章吗?你想用你的文章达到什么目的execute@cols ? 看起来这就是你开始出错的地方。@cols的关键字“select”结果附近的语法不正确很好,但是当我在@q中使用它时,无法获得结果[H],。。它将其视为字符串select STUFLSELECT',CDFSection group by SectionI

此过程的语法错误是什么
这是一个错误:关键字“select”附近的语法不正确。
@cols return[B]、[C]、[H]但我不明白@q打印$q有什么不对?如果是的话,你能发布那篇文章吗?你想用你的文章达到什么目的execute@cols ? 看起来这就是你开始出错的地方。@cols的关键字“select”结果附近的语法不正确很好,但是当我在@q中使用它时,无法获得结果[H],。。它将其视为字符串select STUFLSELECT',CDFSection group by SectionID order by SectionID FORM XML PATH,TYPE.value',NVARCHARMAX',1,1,我想在sql server存储过程内部创建具有动态列的动态数据透视表
exec proc_TestPivotCol 'SectionID','StudiedBy'
ALTER PROCEDURE [dbo].[proc_TestPivotCol]
@ColHeader nvarchar(10),
@RowHeader    nvarchar(max)
AS
BEGIN
DECLARE @q as NVARCHAR(MAX)
DECLARE @cols AS NVARCHAR(MAX)

select @cols ='
select STUFF((SELECT  '','' + QUOTENAME('+@ColHeader+') 
                    from Section
                    group by SectionID
                    order by SectionID
            FOR XML PATH(''''), TYPE
            ).value(''.'', ''NVARCHAR(MAX)'') 
        ,1,1,'''')'
      execute(@cols)



 set @q =' SELECT StudiedBy, '+@cols+'
            from  (select  '+ @RowHeader+','+ @ColHeader+' from ##tempF)
             X
            pivot 
            (
                count(CDFID)
                for ' + @ColHeader+' in ('+@cols+' )
            ) p '
execute(@q)
print(@q)                   
END