【问题标题】:insert result of dynamic pivot query into temp table将动态数据透视查询的结果插入到临时表中
【发布时间】:2019-01-15 05:49:44
【问题描述】:

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

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

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

【问题讨论】:

  • temp table 的用途是什么?您可以将结果集返回给调用应用程序吗?
  • 因为我将更新临时表中的某些字段。
  • 你需要重新考虑你想如何做这一切。临时表无法实现您想要的。一旦超出范围,它就消失了。一种替代方法是使用全局临时表,但您需要使用动态名称创建全局临时表,否则会发生冲突

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • @muhammad..我想要特定于我的查询..我是动态查询的新手。谢谢
    • 请分享示例数据,让我了解每列的数据类型
    猜你喜欢
    • 2019-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多