Использование @variables вместе с оператором SQL «IN» - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь повернуть данные с помощью функции PIVOT в SQL Server.

#final - это временная таблица с 3 столбцами

  1. Week_num
  2. location
  3. Заполнено @ 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.

Как заставить его работать без учета одинарных кавычек вокруг запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...