我正在尝试使用 SQL (SQL Server 2008) 生成数据透视表。为了获得列列表,我使用了 stuff 函数,如果我们将它与 SQL 一起使用,它会非常有用。
尽管由于 Pivot 结构的动态特性(由用户选择),我想将列名设置为变量。我可以捕捉到正确的 SQL Stuff 语法,但无法执行它。任何想法?
请参见以下代码示例: 工作代码:
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(Station)
from #ResultCrosstab
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
Select @cols
不工作代码如下
Declare @ColumnName varchar(100)
set @ColumnName='Station'
DECLARE @cols1 AS NVARCHAR(MAX)
DECLARE @queryCol AS NVARCHAR(MAX)
set @queryCol='STUFF((SELECT distinct '','' + QUOTENAME(' + @ColumnName + ')
from #ResultCrosstab
FOR XML PATH(''), TYPE
).value(''.'', ''NVARCHAR(MAX)'')
,1,1,'''')'
Select @queryCol
Select @cols1=(@queryCol)
Not Working 代码返回 sql 查询本身而不是结果。
有什么想法或建议吗?
哈迪普干杯