这是来自使用MS Access的SQL知识水平较低的人
我在名为T1的表中有一些看起来像这样的数据:
Customer ...........Visit
c…………. 01/01/2001
b…………… 01/01/2001
b…………… 01/01/2001
a……….. 01/01/2001
b……….. 02/01/2001
a…….. 02/01/2001
d………… 02/01/2001
e……….. 03/01/2001
d………. 03/01/2001
c……….. 03/01/2001
我已经编写了一些SQL来识别客户的第一个实例:
SELECT Customer , MIN(Visit) as 'First Contact'
FROM T1
GROUP BY cust;
这会生成客户与我们联系的第一天列表
Customer...... 'First Contact'
a…............... 01/01/2001
b……… .... 01/01/2001
c………...... 01/01/2001
d…….......... 02/01/2001
e……...…… 03/01/2001
所有罚款和花花公子但我需要的是白天总共第一次接触,即
First_Contact_Date… NoOfNewContacts
01/01/2001……... ............ 3
02/01/2001…………........ 1
03/01/2001………............ 1
答案 0 :(得分:2)
基本上,你在中途。你只需要一个聚合:
SELECT FirstContactDate, COUNT(*)
FROM (SELECT Customer , MIN(Visit) as FirstContactDate
FROM T1
GROUP BY cust
) t
GROUP BY FirstContactDate
ORDER BY FirstContactDate;
关于数据类型的说明:Visit
应使用date
或相关类型存储在数据库中。这将确保order by
正常工作。如果 将日期存储为字符串,则使用ISO标准YYYY-MM-DD格式。然后order by
将正常工作。