Я пытаюсь повернуть данные с помощью функции PIVOT
в SQL Server.
#final
- это временная таблица с 3 столбцами
- Week_num
- location
- Заполнено @ HP
DECLARE @ColumnsTable TABLE ([ColumnName] VARCHAR(50));
INSERT INTO @ColumnsTable ([ColumnName])
SELECT DISTINCT '[' + CONVERT(VARCHAR(48), Week_num) + ']'
FROM [#final];
DECLARE @PivotColumns VARCHAR(MAX), @TotalColumn VARCHAR(MAX), @SQL VARCHAR(MAX);
SET @PivotColumns = (SELECT STUFF((SELECT DISTINCT ', ' + CONVERT(VARCHAR(50), [ColumnName])
FROM @ColumnsTable
FOR XML PATH('')), 1, 2, ''));
SET @TotalColumn = (SELECT STUFF((SELECT DISTINCT ' + ISNULL(' + CONVERT(VARCHAR(50), [ColumnName]) + ', 0)'
FROM @ColumnsTable
FOR XML PATH('')), 1, 3, ''));
-----Here I am preparing the final SQL query to run
SET @SQL = 'SELECT *, (' + @TotalColumn + ') AS [Total]
FROM
(SELECT
[location], [Week_num],
Filled@HP
FROM [#final]) AS t
PIVOT (MAX(Filled@HP)
FOR [Week_num] IN (' + @PivotColumns + ')) AS p';
EXEC(@SQL)
Когда я пытаюсь выполнить приведенный выше оператор, я получаю сообщение об ошибке:
Неверный оператор SQL
Я думаю, что он пытается запустить запрос, включая одинарные кавычки вокруг запроса SQL.
Как заставить его работать без учета одинарных кавычек вокруг запроса.