2012-08-02 41 views
5

我有兩個表,table A的:顯示的記錄只有一些領域

Customer_ID Product Date Of Sale Pay Meth 1 Pay Meth 2 QTY 
----------- ------- ------------ ---------- ---------- --- 
     123 AB  1/1/2012    111   222 1 
     123 AB  1/1/2012    111   222 1 
     456 AC  2/1/2012    333   444 1 

table B

Customer_ID Product Date Of Sale Pay Meth 1 Pay Meth 2 QTY 
----------- ------- ------------ ---------- ---------- --- 
     123 AB  1/1/2012    111   222 2 
     456 AB  1/1/2012    124   111 1 

我想數據熱身賽,這樣客戶123table A的記錄分組爲:

Customer_ID  Product  Date Of Sale  Pay Meth 1  Pay Meth 2  QTY 
-----------  -------  ------------  ----------  ----------  --- 
     123 AB  1/1/2012    111   222 2 

和它的右側出現從table B以下記錄:

Customer_ID  Product  Date Of Sale  Pay Meth 1  Pay Meth 2  QTY 
-----------  -------  ------------  ----------  ----------  --- 
     123 AB  1/1/2012    111   222 2 

而且(總有一個也可以),我們要顯示第三個記錄在table A和該記錄的權table B第二個記錄(客戶456),因爲它們具有相同的Customer_IDProductDate of Sale

因此,它應該看起來像

Customer_ID  Product  Date Of Sale  Pay Meth 1  Pay Meth 2  QTY Customer_ID  Product Date Of Sale  Pay Meth 1  Pay Meth 2  QTY 
-----------  -------  ------------  ----------  ----------  ---  -----------  -------  ------------  ----------  ----------  --- 
     123 AB  1/1/2012    111   222 1   123 AB  1/1/2012    111   222 1 
     456 AC  2/1/2012    333   444 1   456 AB  1/1/2012    124   111 1 
+0

作爲@AlexKalicki指出,產品和日期' 456'不在表格之間匹配;這是寫錯了嗎?另外,你是否真的想要重複所有匹配的列? – 2012-08-02 18:48:03

回答

4

你可以在每個表的子查詢以獲得每個客戶的總和數量,然後由客戶ID連接的結果上 如

SELECT a.*, b.* 
FROM (
    Select customer_id, product, dateofsale, PayMeth1, PayMeth2, SUM(Qty) as Qty 
    from TableA 
    Group by customer_id, product, dateofsale, PayMeth1, PayMeth2 
) a 
JOIN (
    Select customer_id, product, dateofsale, PayMeth1, PayMeth2, SUM(Qty) as Qty 
    from TableB 
    Group by customer_id, product, dateofsale, PayMeth1, PayMeth2 
) b 
ON a.customer_id = b.customer_id 
0

什麼你要找的是SQL JOIN命令: http://www.tizag.com/sqlTutorial/sqljoin.php

你會想加入這兩個表只爲列(S)要匹配這樣做行。所以,如果你想匹配基於CUSTOMER_ID兩個表中的記錄,然後你的SQL代碼會是這個樣子:

SELECT * 
FROM A 
JOIN B 
ON A.Customer_ID = B.Customer_ID 

不知道你是什麼意思時,你說那些2個記錄具有相同的ID,產品和銷售日期 - 但它們似乎只有一個ID(456)的共同點。

+0

這不涉及從'表A'中對'QTY'的分組。 – 2012-08-02 18:45:01

+0

好點,我沒有意識到這是OP在編輯之前要做的事情。我不能想到一個好的方法,不需要從表格中刪除一個條目,然後用正確的數量更新另一個條目。 – 2012-08-02 18:49:02

+0

我一直在努力看看是怎麼回事。我會將A從'A'更改爲'from(select id,... sum(qty)from a group by id,...)A',所以你加入了一個進行聚合的子查詢。儘管剛剛沒有時間寫出一個成功的例子。 – 2012-08-02 18:52:24