尝试找出一个查询,该查询可用于查找在创建首次蜂后在预定时间范围内重复的记录。
举例来说,假设我要确定在上次购物后1个月内下了第二笔订单的客户。
在下面的示例中,汤姆和杰夫都是回头客。但只有Jeff满足在一个月内下第二笔订单的条件:
Record Customer Date
1 Tom 6/26/2018
2 Carly 6/31/2018
3 Jeff 7/1/2018
4 Jeff 7/20/2018
5 Tom 8/3/2018
我试图在不定义实际日期的情况下解决这个问题,因为我希望在表中首次找到记录时设置开始日期。
SQL可以做到这一点吗?
注意:如果需要指定,请告诉我,英语不是我的母语。
最佳答案
CREATE TABLE Table1
([Record] int, [Customer] varchar(5), [Date] datetime)
;
INSERT INTO Table1
([Record], [Customer], [Date])
VALUES
(1, 'Tom', '2018-06-26 00:00:00'),
(2, 'Carly', '2018-07-01 00:00:00'),
(3, 'Jeff', '2018-07-01 00:00:00'),
(4, 'Jeff', '2018-07-20 00:00:00'),
(5, 'Jeff', '2018-07-23 00:00:00'),
(6, 'Tom', '2018-08-03 00:00:00')
;
select Customer,count(1) OrderCount from (
select distinct T1.*
from Table1 T1
left join Table1 T2 on
T1.Record <> T2.Record
and T1.Customer = T2.Customer
and DATEDIFF ( month , T1.[Date] , T2.[Date] ) =0
where T2.Record is not null
) T
group by Customer;
| Customer | OrderCount |
|----------|------------|
| Jeff | 3 |
Demo SQL Fiddle
希望它可以帮助您:-)