我正在尝试使用动态 SQL 对需要动态生成列名的表进行透视。我的代码是:
DECLARE @columns varchar(max)
DECLARE @query varchar(max)
SELECT @columns = COALESCE(@columns + ',[' + cast([Name] as varchar(max)) + ']',
'[' + cast([Name] as varchar(max))+ ']')
FROM dbo.Temp2
SET @query = 'SELECT * FROM dbo.Temp2 AS PivotData'
SET @query = @query +
'PIVOT (MAX(VALUE) FOR [NAME] IN (' + @columns + ')) AS p'
EXEC (@query)
我的@columns 函数似乎可以工作(尽管我只能“打印”8000 个字符来验证),并且我已经读到在 SQL 2005 中对非数字 varchars 执行 MAX 或 MIN 函数是可以接受的,但是当我运行以完整形式查询我收到错误消息:
Msg 321, Level 15, State 1, Line 1
"MAX" is not a recognized table hints option. If it is intended as a parameter to a table-valued function, ensure that your database compatibility mode is set to 90.
我检查了兼容性级别,它设置为 90。任何人都可以提供任何建议来解决这个问题吗?
提前谢谢了。