简体   繁体   English

如何将2个单独的临时表的输出合并到单个查询中?

[英]How do I merge the output from 2 separate temp tables into a single query?

I am using SQL Server 2012 and I have 2 separate T-SQL queries which I am trying to merge as a single query. 我正在使用SQL Server 2012并且有2个单独的T-SQL查询,尝试将它们合并为一个查询。

Query 1: 查询1:

   USE MyDatabase
   SELECT [Col A], [Col B], [Col C]
   INTO #TempTable
   FROM MyList
   WHERE [Date] >= '2018-01-01'

   SELECT * FROM #TempTable

   PIVOT(SUM([Col B]) 
   FOR [Col A] IN ([Jan], [Feb], [Mar], [Apr], [May], [Jun], [Jul], [Aug], [Sep], [Oct], [Nov], [Dec])) AS PVTTable

Query 2: 查询2:

   USE MyDatabase
   SELECT [Col A], [Col B], [Col C]
   INTO #TempTable2
   FROM MyList
   WHERE [StayDate] >= '2018-01-01'
   AND [DateCreated] <= '2018-01-27'

  SELECT * FROM #TempTable2

  PIVOT(SUM([Col B]) 
   FOR [Col A] IN ([Jan], [Feb], [Mar], [Apr], [May], [Jun], [Jul], [Aug], [Sep], [Oct], [Nov], [Dec])) AS PVTTable

I have tried using the UNION ALL syntax, as follows: 我尝试使用UNION ALL语法,如下所示:

   USE MyDatabase
   SELECT [Col A], [Col B], [Col C]
   INTO #TempTable
   FROM MyList
   WHERE [StayDate] >= '2018-01-01'

   PIVOT(SUM([Col B]) 
   FOR [Col A] IN ([Jan], [Feb], [Mar], [Apr], [May], [Jun], [Jul], [Aug], [Sep], [Oct], [Nov], [Dec])) AS PVTTable


   UNION ALL

   SELECT [Col A], [Col B], [Col C]
   INTO #TempTable2
   FROM MyList
   WHERE [StayDate] >= '2018-01-01'
   AND [DateCreated] <= '2018-01-27'

   PIVOT(SUM([Col B]) 
   FOR [Col A] IN ([Jan], [Feb], [Mar], [Apr], [May], [Jun], [Jul], [Aug], [Sep], [Oct], [Nov], [Dec])) AS PVTTable

My objective is to merge the 2 pivot results as one single output table. 我的目标是将2个枢轴结果合并为一个输出表。 However, this is not working! 但是,这不起作用! How do I re-write this query? 如何重新编写此查询?

If you want this in one table, you would have only one into in the query. 如果你想在这一个表,你将有只有一个into查询。 For UNION ALL this is in the first query: 对于UNION ALL这是在第一个查询中:

   SELECT [Col A], [Col B], [Col C]
   INTO #TempTable
   FROM MyList
   WHERE [StayDate] >= '2018-01-01'

   PIVOT(SUM([Col B]) 
   FOR [Col A] IN ([Jan], [Feb], [Mar], [Apr], [May], [Jun], [Jul], [Aug], [Sep], [Oct], [Nov], [Dec])) AS PVTTable
   UNION ALL    
   SELECT [Col A], [Col B], [Col C]
   FROM MyList
   WHERE [StayDate] >= '2018-01-01'
   AND [DateCreated] <= '2018-01-27'

   PIVOT(SUM([Col B]) 
   FOR [Col A] IN ([Jan], [Feb], [Mar], [Apr], [May], [Jun], [Jul], [Aug], [Sep], [Oct], [Nov], [Dec])) AS PVTTable;

That said, I don't think your queries work. 就是说,我认为您的查询无效。 This answer only addresses the syntax question about saving data to one table. 此答案仅解决有关将数据保存到一个表的语法问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM