在tech on the net练习#3的答案正是我所需要的。但是根据我自己的经验和Jensen's answer to a similar question,我发现它不起作用。
我的数据如下:
my_table:
: Customer : Contract : Product : Date :
: John : 123 : Plate : 12/5/13 :
: John : 123 : Spork : 12/5/13 :
: Jane : 567 : Bowl : 9/9/13 :
: Jane : 789 : Plate : 9/9/13 :
: Jane : 789 : Spork : 9/9/13 :
: Bob : 234 : Plate : 8/7/13 :
: John : 345 : Plate : 4/9/13 :
: John : 345 : Sponge : 4/9/13 :
我想要的是获得每位客户的独特合约数量。
my_query
: Customer : Number of Contracts :
: Jane : 2 :
: John : 2 :
: Bob : 1 :
如果我只想要从2013年6月到2014年6月(过去的一年)的合同,那么我会得到:
my_query
: Customer : Number of Contracts :
: Jane : 2 :
: Bob : 1 :
: John : 1 :
提前致谢!
答案 0 :(得分:1)
您需要使用子查询来获取不同的客户/合同组合,然后您可以在子查询上执行分组以获取计数。
SELECT Customer, COUNT(*) AS contract_count
FROM
(SELECT DISTINCT Customer, Contract
FROM my_table) contract_data
GROUP BY Customer
如果要进行日期过滤,可以在子查询中进行过滤。
SELECT Customer, COUNT(*) AS contract_count
FROM
(SELECT DISTINCT Customer, Contract
FROM my_table
WHERE [Date] BETWEEN #6/1/2013# AND #6/1/2014#) contract_data
GROUP BY Customer