简体   繁体   中英

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.

Query 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:

   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:

   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. 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. For UNION ALL this is in the first query:

   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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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