2017-05-10 3 views
0

나는 하나의 창고를 생성하고 이것을 사용하여 동일한 열 이름을 가진 3 개의 cte를 생성합니다. 나는 하나 개의 결과 집합으로이 세 CTE의의를 컴파일해야열을 병합하여 3 개의 임시 테이블을 하나의 결과 테이블에 결합하십시오.

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) 

: 아래 내 T-SQL 쿼리입니다.

나는 이것을 달성 할 수있을 것입니다. 나는 PIVOT에 대해 생각해 봤지만 어떻게 할 수 있을지 내 머리를 감싸는 것처럼 보이지 않는다.

+0

4 열팽창 계수가 생각

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

감사합니다, 다음과 같이 답변? – avb

+0

WhList는 CoB, CoH 및 CoX를 컴파일하는 데 사용되므로 WhList는 조합으로 사용할 필요가 없습니다. –

답변

0

해결했습니다. 나는 내가 이것을 생각하지 않는다고 생각하지 않는다. 당신이 결합 할 세 가지

+0

당신의 설명 후 내 답이 될 것입니다 – avb

+0

감사합니다 @avb –

+0

유니온은 정말로 별개의 값을 요구할 경우 'UNION'으로 이동하고 'Union ALL'로 가십시오 –

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의 모든 열을 표시해야하지만 같은 생각입니다. 나 자신의 질문에 너무 늦게 대답했다. 그러나 동일한 개념으로 내려갈 때 당신도 받아 들일 것입니다. 그래도 고마워. –