【发布时间】:2018-01-28 08:24:35
【问题描述】:
我正在使用 SQL Server 2012 并且我有 2 个单独的 T-SQL 查询,我正在尝试将它们合并为一个查询。
查询 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
查询 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
我尝试过使用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
我的目标是将 2 个数据透视结果合并为一个输出表。但是,这是行不通的!如何重写此查询?
【问题讨论】:
-
你能提供样本数据和你的预期输出吗?
-
如果你想要一张桌子那你为什么要用两张桌子?
-
您的查询真的有效吗?
-
@GordonLinoff 不,他们没有!我已经更新了它们。
标签: sql sql-server tsql union temp-tables