2014-07-16 105 views
0

如何將具有相同信息的數據合併或合併到一行,如下圖所示。如何合併或合併與SQL具有相同數據的數據

Image

SQL:

SELECT C.[LocationCode] 
    ,C.[PartNumber] 
    ,C.[WorksOrderNumber] 
    ,CONVERT(DECIMAL(18,0), C.[BatchQuantity]) AS 'MAC_Outstanding' 
FROM CUSTOMER_MN C 
WHERE C.[LocationCode] = 'P1' 

SELECT R.[LocationCode] 
    ,R.[PartNumber] 
    ,R.[WorksOrderNumber] 
    ,CONVERT(DECIMAL(18,0), R.[PlannedQuantity] - R.[ActualQuantity]) AS 'ASY_Outstanding' 
FROM CUSTOMER_RH R 
WHERE R.[LocationCode] = 'P1' 

回答

0

爲了合併數據使用UNION ALL

SELECT C.[LocationCode] 
    ,C.[PartNumber] 
    ,C.[WorksOrderNumber] 
    ,CONVERT(DECIMAL(18,0), C.[BatchQuantity]) AS 'MAC_Outstanding' 
FROM CUSTOMER_MN C 
WHERE C.[LocationCode] = 'P1' 

UNION ALL 

SELECT R.[LocationCode] 
    ,R.[PartNumber] 
    ,R.[WorksOrderNumber] 
    ,CONVERT(DECIMAL(18,0), R.[PlannedQuantity] - R.[ActualQuantity]) AS 'ASY_Outstanding' 
FROM CUSTOMER_RH R 
WHERE R.[LocationCode] = 'P1' 

爲了合併數據使用下面的查詢:

Select * 
From (
    SELECT C.[LocationCode] 
     ,C.[PartNumber] 
     ,C.[WorksOrderNumber] 
     ,CONVERT(DECIMAL(18,0), C.[BatchQuantity]) AS 'MAC_Outstanding' 
    FROM CUSTOMER_MN C 
    WHERE C.[LocationCode] = 'P1')z1 

Left Join (
    SELECT R.[LocationCode] 
     ,R.[PartNumber] 
     ,R.[WorksOrderNumber] 
     ,CONVERT(DECIMAL(18,0), R.[PlannedQuantity] - R.[ActualQuantity]) AS 'ASY_Outstanding' 
    FROM CUSTOMER_RH R 
    WHERE R.[LocationCode] = 'P1' 
    )z2 On Z1.LocationCode = Z2.LocationCode, Z1.PartNumber = Z2.PartNumber and Z1.WorkOrderNumber = z2.WorkOrderNumber 
2

爲什麼不使用join

SELECT C.[LocationCode] 
    ,C.[PartNumber] 
    ,C.[WorksOrderNumber] 
    ,CONVERT(DECIMAL(18,0), C.[BatchQuantity]) AS 'MAC_Outstanding' 
    ,CONVERT(DECIMAL(18,0), R.[PlannedQuantity] - R.[ActualQuantity]) AS 'ASY_Outstanding' 
FROM CUSTOMER_MN C 
JOIN CUSTOMER_RH R ON C.LocationCode = R.LocationCode AND C.Partnumber = R.Partnumber AND C.WorksOrderNumber = R.WorksOrderNumber 
WHERE C.[LocationCode] = 'P1'