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

我想匹配数据,以便客户的记录123分组table 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

另外(总是有一个also)我们想在该记录table A的右侧显示第三条记录table B(客户456)中的第二条记录,因为它们有相同的Customer_IDProduct并且Date 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
4

2 回答 2

5

您可以对每个表进行子查询以获取每个客户的总和数量,然后通过客户 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
于 2012-08-02T18:51:52.180 回答
1

您正在寻找的是 SQL JOIN 命令: http ://www.tizag.com/sqlTutorial/sqljoin.php

您只想为要匹配的列加入这两个表的行。因此,如果您尝试根据 customer_id 匹配两个表中的记录,那么您的 SQL 代码将如下所示:

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

不过,当您说这两条记录具有相同的 ID、产品和销售日期时,不确定您的意思是什么——它们似乎只有一个共同的 ID (456)。

于 2012-08-02T18:33:23.830 回答