вставить результат динамического сводного запроса во временную таблицу - PullRequest
0 голосов
/ 15 января 2019

У меня динамический сводный запрос

     SELECT * FROM (SELECT [SERVICEID],
                    [SERVICETYPEID],[TRAIN],[SERVICETYPEOPTIONID], 
                    [OPTIONNAME], [CLIENTID],[AGENT],  [MANAGEMENTLEGID ],   
                    [LEG],   [ALLOCATIONDATE],[CURRENTALLOCATION] 
   FROM EXCELEXPORT) AS [SubTable]  PIVOT (MAX([CURRENTALLOCATION])FOR [ALLOCATIONDATE] IN ( [02/05/19], [02/07/19], [02/08/19], [02/09/19], [02/10/19]) ) AS [Pivot];

, который должен быть вставлен во временную таблицу. Как я могу этого достичь. Любые входные данные будут оценены.

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Если вы хотите вставить результат EXEC sp_executesql во временную таблицу, вам необходимо сначала определить определение вашей таблицы.

И поскольку ваш динамический оператор T-SQL может привести к разному количеству возвращаемых столбцов, вы не собираетесь определять таблицу в расширенном порядке.

На самом деле, вы можете определить такую ​​таблицу заранее, используя инструкцию T-SQL, но она не будет видна при других sp_execuetsql выполнении или внешней области видимости:

EXEC sp_executesql N'CREATE TABLE #DataSource ([column] int)';

EXEC sp_executesql N'SELECT * FROM #DataSource';

SELECT *
FROM #DataSource;

Итак, единственный выбор, который у вас есть, - это обернуть всю логику в динамический оператор T-SQL и затем вернуть результат.

0 голосов
/ 15 января 2019

PIVOT используется для поворота данных из одного столбца в несколько столбцов.

Здесь DEMO с использованием временной таблицы для обработки запроса PIVOT

...