【发布时间】:2013-05-30 15:35:59
【问题描述】:
我有一个带有列的表格:
Anno, Description, Number
________________________
2011 Example1 12
2013 Example2 9
2011 Example4 8
......
Description 列中的值是动态的
我必须生成如下表格:
Anno Example1 Example2 Example3 Example4 ........
--------------------------------------------------
2011 12 0 0 8 ........
2012 0 23 24 36 ........
......
我创建了一个这样的视图:
Declare @cols AS NVARCHAR(Max),
@query AS NVARCHAR(Max)
Select @cols = STUFF(( Select ','+QUOTENAME(Description)
FROM mytable
GROUP BY Description
Order by Description
FOR XML PATH ('',TYPE
).value('.','NVARCHAR(Max)'),1,1,'')
SET @query= 'Select Anno, '+cols+' from
(Select Anno, Description, Number
FROM mytable ) as x
PIVOT
(
SUM(Number)
FOR Description in ('+cols+')
) pvt'
EXECUTE(@query)
它返回一个错误:
',' 附近的语法不正确
【问题讨论】:
-
错误是否发生在
EXECUTE行?假设是这样,在进行这样的动态查询生成时,在执行查询之前PRINT查询通常很有用。@query在执行之前包含什么? -
但我希望我只有一个表可以通过编程显示。所有人的坦克
-
如果添加
PRINT语句,然后在 Management Studio 中全部执行,您应该会看到查询打印到输出。
标签: sql-server