我必须根据复杂查询编写动态数据透视表,并且我想使用公用表表达式创建数据集,在该数据集上我必须构建数据透视表,动态SQL和它编译如何在动态SQL中使用公用表表达式
我的问题是,我不知道我是否可以在一个SET中使用CTE,我要包装我必须执行的动态SQL。
让看到代码:
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 =
一个错误。如果我更换一组选定存储过程进行编译,但如果我运行它,我得到:
Invalid object name 'DatiCTE'
CTE的范围是保持动态SQL以外的代码 –