在Microsoft Access中使用JOIN时标识重复的值

时间:2014-06-24 20:48:31

标签: sql ms-access

我有2个表,可以为客户提供价值。第一个表包含客户的名称,第二个表包含与客户相关的信息,如交易。

第一个表格似乎是

CustomerID    Name
1             Joe
2             Jane

第二张表格似乎是

TransactID    CustomerID    Reference
1             1             REF123
2             2             REF123
3             1             REF321

我需要能够识别参考列中的所有重复项以及它所属的客户,例如乔,简

我目前的代码看起来像是

SELECT o.name, COUNT(p.reference) as RefCount
FROM (t_cust as o
INNER JOIN t_custprop as p
         ON o.customerid = p.customerid)
GROUP BY o.name, p.reference
HAVING (COUNT(p.reference)>1) 
ORDER BY o.name ASC

由于我不知道可能重复的可能值,上面的代码不会返回客户的名称和可能重复的引用。

1 个答案:

答案 0 :(得分:1)

按照您计算的项目进行分组将始终导致计数为1,这可以通过您的having子句消除。这应该是诀窍:

SELECT o.name, p.reference
FROM t_cust o
    INNER JOIN t_custprop p ON o.customerid = p.customerid
WHERE p.reference IN (
    SELECT p2.reference
    FROM t_custprop p2
    GROUP BY p2.reference
    HAVING COUNT(p2.customerid) > 1
    )
ORDER BY o.name ASC