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