2017-05-10 96 views
0

我有一个巨大的查询来创建仓库的cte,并使用它创建3个具有相同列名称的cte。下面 是我的T-SQL查询:通过合并列将3个临时表合并到1个结果表中

With WhList AS (SELECT Company, Warehouse FROM 
CCWMS.dbo.WMSWarehouse_Control), 
CoB AS (SELECT 'B' AS Company, B_IMB.Warehouse, B_IMB.StockCode, B_IMB.Bin, B_IMB.QtyOnHand1 AS QtyOnHand, B_IMB.SoQtyToShip, B_IMB.LastReceiptDate,B_IMB.OnHold FROM SysproCompanyB.dbo.InvMultBin AS B_IMB RIGHT JOIN WhList As WL ON B_IMB.Warehouse=WL.Warehouse WHERE QtyOnHand1 <> 0), 
CoX AS (SELECT 'X' AS Company, X_IMB.Warehouse, X_IMB.StockCode, X_IMB.Bin, X_IMB.QtyOnHand1 AS QtyOnHand, X_IMB.SoQtyToShip, X_IMB.LastReceiptDate,X_IMB.OnHold FROM SysproCompanyX.dbo.InvMultBin AS X_IMB RIGHT JOIN WhList As WL ON X_IMB.Warehouse=WL.Warehouse WHERE QtyOnHand1 <> 0), 
CoH AS (SELECT 'H' AS Company, H_IMB.Warehouse, H_IMB.StockCode, H_IMB.Bin, H_IMB.QtyOnHand1 AS QtyOnHand, H_IMB.SoQtyToShip, H_IMB.LastReceiptDate,H_IMB.OnHold FROM SysproCompanyH.dbo.InvMultBin AS H_IMB RIGHT JOIN WhList As WL ON H_IMB.Warehouse=WL.Warehouse WHERE QtyOnHand1 <> 0) 

我需要编译这三个CTE的为一个结果集。

任何我可能能够实现的方式。我曾经想过PIVOT,但似乎无法绕过我的头如何做到这一点。

+0

有4个热膨胀系数,要合并三个? – avb

+0

WhList用于编译CoB,CoH和CoX,因此WhList不需要在组合中 –

回答

0

我解决了它。我不相信我没有想到这一点。答案如下:

--CTE's end here. 
SELECT * FROM CoB 
UNION 
SELECT * FROM CoX 
UNION 
SELECT * FROM CoH 

谢谢您的好意

+0

这将是我的回答后,你的澄清 – avb

+0

谢谢,虽然@avb –

+0

联盟将做不同,如果你真的需要不同的值去'联合'其他'去联盟' –

0

我认为你正在寻找结合所有结果......你是什么意思结合的结果?

你看起来像下面的东西?

SELECT Company, Warehouse FROM (
SELECT 'B' AS Company, B_IMB.Warehouse, B_IMB.StockCode, B_IMB.Bin, B_IMB.QtyOnHand1 AS QtyOnHand, B_IMB.SoQtyToShip, B_IMB.LastReceiptDate,B_IMB.OnHold FROM SysproCompanyB.dbo.InvMultBin AS B_IMB RIGHT JOIN WhList As WL ON B_IMB.Warehouse=WL.Warehouse WHERE QtyOnHand1 <> 0 
UNION ALL 
SELECT 'X' AS Company, X_IMB.Warehouse, X_IMB.StockCode, X_IMB.Bin, X_IMB.QtyOnHand1 AS QtyOnHand, X_IMB.SoQtyToShip, X_IMB.LastReceiptDate,X_IMB.OnHold FROM SysproCompanyX.dbo.InvMultBin AS X_IMB RIGHT JOIN WhList As WL ON X_IMB.Warehouse=WL.Warehouse WHERE QtyOnHand1 <> 0 
UNION ALL 
SELECT 'H' AS Company, H_IMB.Warehouse, H_IMB.StockCode, H_IMB.Bin, H_IMB.QtyOnHand1 AS QtyOnHand, H_IMB.SoQtyToShip, H_IMB.LastReceiptDate,H_IMB.OnHold FROM SysproCompanyH.dbo.InvMultBin AS H_IMB RIGHT JOIN WhList As WL ON H_IMB.Warehouse=WL.Warehouse WHERE QtyOnHand1 <> 0 
) A 
+0

Co CTE中的所有列都应显示,但是您有相同的想法。我确实回答了我自己的问题,太迟了。但也会接受你的想法,因为它涉及到相同的概念。谢谢。 –

相关问题