我正在尝试创建一个MySQL查询,当一个人VisitorID
在30天之内DateOfService
返回时,该查询将返回所有行。理想情况下,我希望查询返回所有字段,但是该示例具有使查询正常工作的相关字段。
表样本
VisitorID DateOfService Cost TransactionID
001 2008-08-15 150.00 11-235-24
001 2008-09-07 175.00 11-272-50
002 2008-08-15 155.00 11-688-14
002 2008-09-16 181.00 11-841-67
001 2011-01-07 190.00 12-851-41
001 2011-01-18 100.00 12-901-55
003 2011-02-05 150.00 12-951-14
003 2011-02-15 180.00 12-998-51
理想的查询结果
VisitorID DateOfService Cost TransactionID
001 2008-09-07 175.00 11-272-50
001 2011-01-18 100.00 12-901-55
003 2011-02-15 180.00 12-998-51
我曾尝试使用分组依据进行变体形式,但似乎无法在30天的滚动窗口中做到这一点。
最佳答案
SELECT t1.*
FROM table t1
INNER JOIN table t2
ON t1.VisitorID = t2.VisitorID AND
t1.TransactionID != t2.TransactionID AND
t1.DateOfService > t2.DateOfService AND
datediff(t1.DateOfService, t2.DateOfService) < 30
demo on sqlfiddle
关于mysql - 查找历史数据在30天内再次访问的用户的记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34294220/