访问:计算两个连接表中的唯一记录

Access: Counting unique records in two joined tables

我有两个 table 看起来像这样:

Rep     Client ID #
-------------------
Bob     100
Joe     200
Joe     201
Dave    300
Dave    301

Rep     Client ID #
----------------
Jack    100
Joe     200
Joe     400
Dave    300
Dave    500

我需要做两件事:

  1. 计算每个 table 中每个代表分配了多少客户(ID #'s)。例如。对于 table 1,Bob 有 1 个,Joe 有 2 个,Dave 有 2 个。

  2. 从两个 table 中计算每个代表总共有多少个唯一客户。在上面的示例中,Bob 有 1 个,Joe 有 3 个,Dave 有 3 个,Jack 有 1 个。

我该怎么做???

您需要一个 GROUP BY/Totals 查询。对于您的第一个要求,

SELECT 
    Rep,
    Count(ClientID) As CountOfID
FROM
    Table1
GROUP BY 
    Rep;

针对您的第二个要求。您将需要一个带 GROUP BY 的 UNION。

SELECT 
    TmpQ.Rep,
    Count(TmpQ.ClientID) As CountOfID
FROM
    (
        SELECT
            Table1.Rep,
            Table1.ClientID
        FROM 
            Table1
        GROUP BY 
            Table1.Rep,
            Table1.ClientID
        UNION
        SELECT
            Table2.Rep,
            Table2.ClientID
        FROM 
            Table2
        GROUP BY 
            Table2.Rep,
            Table2.ClientID
    ) As TmpQ
GROUP BY 
    TmpQ.Rep;

要获取每个代表每个 table 的不同 clientids 的数量,您可以使用:

SELECT
    sourcetable,
    rep,
    count(clientid)
FROM    
    (
        SELECT
            "table 1" as [sourcetable],
            rep,
            clientid
        FROM 
            table1
        GROUP BY 1,2,3
    )
UNION ALL
SELECT
    sourcetable,
    rep,
    count(clientid)
FROM    
    (
        SELECT
            "table 2" as [sourcetable],
            rep,
            clientid
        FROM 
            table2
        GROUP BY 1,2,3
    )

不考虑 table:

只获取每个代表的不同 clientids 的数量
SELECT
    rep,
    count(clientid)
FROM
    (
        SELECT rep,clientid FROM table1
        UNION
        SELECT rep,clientid FROM table2
    )
GROUP BY 1