首页 > 解决方案 > 将动态数据透视查询的结果插入临时表

问题描述

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

     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];

这需要插入到临时表中。我怎样才能实现它。任何输入都是有价值的。

标签: sqlsql-serverpivottemp-tablesdynamicquery

解决方案


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


推荐阅读