【发布时间】:2015-10-13 22:22:31
【问题描述】:
我必须基于复杂查询编写动态数据透视表,并且我想使用公用表表达式创建数据集,我必须在该数据集上构建数据透视表以将其保留在动态 sql 之外并进行编译
我的问题是我不知道我是否可以在我包装我必须执行的动态 SQL 的 SET 中使用 CTE。
让我们看看代码:
WITH DatiCTE AS
(
SELECT ...
)
SET @DynamicPivotQuery =
N'SELECT IdActivity, ' + @PivotSelectColumnNames + '
FROM DatiCTE
PIVOT(SUM(NumOfDays)
FOR Area IN (' + @PivotColumnNames + ')) AS PVTTable'
WHERE 1 = 1
EXEC sp_executesql @DynamicPivotQuery
这样我在SET @DynamicPivotQuery =附近得到一个错误
如果我用 SELECT 替换 SET,则编译存储过程,但如果我运行它,我会得到:
Invalid object name 'DatiCTE'
【问题讨论】:
标签: sql-server tsql common-table-expression dynamic-sql