将动态数据透视查询的结果插入到临时表中

时间:2019-01-15 05:49:44

标签: sql sql-server pivot temp-tables dynamicquery

我有一个动态数据透视查询

     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 :(得分:0)

PIVOT,用于将数据从一列旋转到多列。

这里DEMO使用临时表处理PIVOT查询

答案 1 :(得分:0)

如果要将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语句中,然后返回结果。