2014-01-16 35 views
0

我有這個2個SELECT語句充分利用2條SELECT語句,其返回多行

SELECT SizeName,SUM(DESIGNSIZERELEASE.Quantity) as [Release] 
FROM DESIGNRELEASE JOIN 
    DESIGNSIZERELEASE 
    ON DESIGNRELEASE.DesignReleaseID = DESIGNSIZERELEASE.DesignReleaseID JOIN 
    SIZESET 
    ON SIZESET.SizeSetID = DESIGNSIZERELEASE.SizeSetID AND 
     DESIGNRELEASE.RevisionNo = SIZESET.RevisionNo 
WHERE DESIGNRELEASE.RevisionNo = 2 AND DESIGNRELEASE.DesignID='SD00000' 
GROUP BY DESIGNRELEASE.DesignID,Towhom,SizeName 
ORDER BY case SizeName when 'XS' then 1 when 'S' then 2 when 'M' then 3 when 'L' then 4 when 'XL' then 5 end 

SELECT SUM(DESIGNRECEIVEDETAILS.Quantity) as [Receive] 
FROM DESIGNRELEASE JOIN 
    DESIGNSIZERELEASE 
    ON DESIGNRELEASE.DesignReleaseID = DESIGNSIZERELEASE.DesignReleaseID JOIN 
    SIZESET 
    ON SIZESET.SizeSetID = DESIGNSIZERELEASE.SizeSetID AND 
     DESIGNRELEASE.RevisionNo = SIZESET.RevisionNo JOIN 
    DESIGNRECEIVE 
    ON DESIGNRECEIVE.DesignReleaseID = DESIGNRELEASE.DesignReleaseID JOIN 
    DESIGNRECEIVEDETAILS 
    ON DESIGNRECEIVE.ReceiptID = DESIGNRECEIVEDETAILS.ReceiptID AND 
     DESIGNRECEIVEDETAILS.SizeSetID = SIZESET.SizeSetID 
WHERE DESIGNRELEASE.RevisionNo = 2 AND DESIGNRELEASE.DesignID='SD00000' 
GROUP BY DESIGNRELEASE.DesignID,Towhom,SizeName 
ORDER BY case SizeName when 'XS' then 1 when 'S' then 2 when 'M' then 3 when 'L' then 4 when 'XL' then 5 end 

有這2個結果

+----------+-------------+  
|Size NAME |RELEASE  | 
+----------+-------------+ 
|S   |20   | 
+----------+-------------+ 
|M   |20   | 
+----------+-------------+ 

+----------+ 
|Receive | 
+----------+ 
|10  | 
+----------+ 
|10  | 
+----------+ 

我需要得到的差異發佈和接收的區別我該怎麼做?感謝順便說一句我分開他們,因爲我沒有得到正確的結果,當我把它們在一個單一的選擇聲明

+0

您是否嘗試過在「Size Name」上加入表格,然後使用ABS(ColA-ColB)'找到絕對差異? –

+0

@DanielPark還沒有試試 – Vince

+0

@DanielPark它返回0 – Vince

回答

1

我不知道你是否可以在mysql中這樣做,但這是你可以在Oracle中做的事情..

SELECT TABLE1.SizeName, TABLE1.Release, TABLE2.Receive, (TABLE1.Release - TABLE2.Receive) Difference 
    FROM 
    (SELECT SizeName, SUM(DESIGNSIZERELEASE.Quantity) as [Release] 
    FROM DESIGNRELEASE JOIN DESIGNSIZERELEASE ON DESIGNRELEASE.DesignReleaseID = DESIGNSIZERELEASE.DesignReleaseID 
    JOIN SIZESET ON SIZESET.SizeSetID = DESIGNSIZERELEASE.SizeSetID AND DESIGNRELEASE.RevisionNo = SIZESET.RevisionNo 
    WHERE DESIGNRELEASE.RevisionNo = 2 AND DESIGNRELEASE.DesignID='SD00000' 
    GROUP BY DESIGNRELEASE.DesignID,Towhom,SizeName 
    ORDER BY case SizeName when 'XS' then 1 when 'S' then 2 when 'M' then 3 when 'L' then 4 when 'XL' then 5 end) TABLE1 
    , 
    (SELECT SizeName, SUM(DESIGNRECEIVEDETAILS.Quantity) as [Receive] 
    FROM DESIGNRELEASE JOIN DESIGNSIZERELEASE ON DESIGNRELEASE.DesignReleaseID = DESIGNSIZERELEASE.DesignReleaseID 
    JOIN SIZESET ON SIZESET.SizeSetID = DESIGNSIZERELEASE.SizeSetID AND DESIGNRELEASE.RevisionNo = SIZESET.RevisionNo 
    JOIN DESIGNRECEIVE ON DESIGNRECEIVE.DesignReleaseID = DESIGNRELEASE.DesignReleaseID 
    JOIN DESIGNRECEIVEDETAILS ON DESIGNRECEIVE.ReceiptID = DESIGNRECEIVEDETAILS.ReceiptID 
    AND DESIGNRECEIVEDETAILS.SizeSetID = SIZESET.SizeSetID WHERE DESIGNRELEASE.RevisionNo = 2 
    AND DESIGNRELEASE.DesignID='SD00000' GROUP BY DESIGNRELEASE.DesignID,Towhom,SizeName 
    ORDER BY case SizeName when 'XS' then 1 when 'S' then 2 when 'M' then 3 when 'L' then 4 when 'XL' then 5 end) TABLE2 
    WHERE TABLE1.SizeName = Table2.SizeName 
+0

謝謝我會在sql – Vince

+0

嘗試它第一個工作感謝:) – Vince