попробуйте это ..
Отредактировано для создания вложенной динамической функции, поскольку я не включал @COLUMNS в динамический SQL раньше.
Обратите внимание, как переменная @COLUMNS объединяется с SQL.
Я изменил запрос, выбрав *, но вы можете добавить переменную @COLUMNS таким же образом, если необходимо
Также в вашем примере у вас есть CTE с именем table_CTE и затем как tableCTE без подчеркивания.
DECLARE @query nvarchar(4000)
SET @query =
'DECLARE @COLUMNS NVARCHAR(MAX) = ''[CELL], [OFFICE]'';
DECLARE @query2 NVARCHAR(4000) = ''
WITH table_CTE ([Name], DayOfBirth, Phone) AS
(
SELECT pp.FirstName AS Name
,CONVERT(NVARCHAR(5), pp.Birthday, 103) AS Birthday
,ph.Number
FROM People pp, Phones ph
,PhoneNumberTypes pht
WHERE pp.PersonId = ph.PersonId AND ph.PhoneTypeId = pht.PhoneTypeId
AND MONTH(pp.Birthday) = 06
)
SELECT *
FROM (SELECT [Name], DayOfBirth,Phone FROM table_CTE) x
PIVOT(
MAX(Name)
FOR Phone IN ('' + @COLUMNS + '')
)p''
EXEC(@query2)'
EXEC(@query)