仅使用连接条件从单个表中检索不同的计数

时间:2015-10-20 16:36:50

标签: sql sas

我要求了解2013年和2014年有多少客户

以下是我使用的查询:

proc sql;
        select count(distinct a.CUSTOMER_NUMBER)
        from LOCFIL.CUST_DB_2013 as a
        inner join LOCFIL.CUST_DB_2014 as b
            on a.CUSTOMER_NUMBER = B.CUSTOMER_NUMBER
;quit;

这给了我这两年的客户数量

但我需要 1)客户仅从2013年开始,并在2014年继续 2)仅来自2014年的客户,他们也出席了2013年

为此我尝试了以下方式:

1)

proc sql;
        select count(distinct a.CUSTOMER_NUMBER)
        from LOCFIL.CUST_DB_2013 as a
        left  join LOCFIL.CUST_DB_2014 as b
            on a.CUSTOMER_NUMBER = B.CUSTOMER_NUMBER
;quit;

2)

proc sql;
        select count(distinct a.CUSTOMER_NUMBER)
        from LOCFIL.CUST_DB_2014 as a
        left  join LOCFIL.CUST_DB_2013 as b
            on a.CUSTOMER_NUMBER = B.CUSTOMER_NUMBER
;quit;

但数字甚至没有接近(左连接查询计数超过内连接计数,这让我担心)。 你能帮我解决一下这些数字吗?

1 个答案:

答案 0 :(得分:2)

如果有人需要在这两年中出现,请使用内部join

proc sql;
        select count(distinct a.CUSTOMER_NUMBER)
        from LOCFIL.CUST_DB_2013 as a join
             LOCFIL.CUST_DB_2014 as b
             on a.CUSTOMER_NUMBER = B.CUSTOMER_NUMBER;
quit;

如果每年没有重复的客户,那么只需使用count(*)