Мне нужно написать динамическую сводную таблицу на основе сложного запроса, и я хочу использовать общее табличное выражение для создания набора данных, на котором я должен построить сводную информацию, чтобы он оставался вне динамического sql и скомпилировал его.
Моя проблема в том, что я не знаю, могу ли я использовать CTE в SET, где я оборачиваю динамический 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 =
Если я заменю SET на SELECT, хранимая процедура скомпилируется, но если я ее запущу, я получу:
Invalid object name 'DatiCTE'