0
У меня есть таблицаНе удалось выполнить правильный динамический поворот?
DECLARE @T TABLE(Val1 VARCHAR(20), Id INT, Val2 INT)
INSERT INTO @T VALUES
('X',1,2),
('Y',2,3)
Если я хочу, чтобы запустить PIVOT (статика), запрос является
SELECT ID, [X],[Y] from @T
PIVOT
(
MAX(Val2)
FOR Val1 IN ([X],[Y])
) AS X
ORDER BY 1
Он работает, как ожидалось. Как мы можем сделать то же самое в Dynamic PIVOT?
Моя попытка
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT ',' + QUOTENAME(Val1)
from @T
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = N'SELECT ID, ' + @cols + N' from @T
PIVOT
(
MAX(Val2)
FOR Val1 IN (' + @cols + N')
) AS X
ORDER BY 1'
exec sp_executesql @query
Ошибка:
Msg 1087, Level 15, State 2, Line 1
Must declare the table variable "@T".