Return 下次客户拜访日期

Return next customer visit date

我有一个 table,其中包含唯一客户的上次访问日期。我有另一个历史 table,其中包含他们的所有访问以及任何未来预订的日期。我需要能够 return 他们上次访问后的下一次访问日期。

有人可以帮忙吗,我遇到的问题是有些客户预订了多个未来日期。

也许这些行中的内容适合:

SELECT cv.CustomerId, cv.LastVisit, 
      (SELECT TOP 1 h.Visitdate 
       FROM History h 
       WHERE h.Visitdate>cv.LastVisit  AND h.CustomerId = cv.CustomerId 
       ORDER BY h.VisitDate) AS NextVisit
FROM CustomerVisits cv

创建一个查询,为您提供历史记录 table 行,这些行的访问日期比客户上次访问的日期更近。

SELECT
    c.CustomerID,
    h.VisitDate
FROM
    CustomerVisits AS c
    INNER JOIN History AS h
    ON c.CustomerID = h.CustomerID
WHERE h.VisitDate > c.LastVisit;

一旦你让它正常工作,你可以将它用作 GROUP BY 查询中的子查询,你可以在其中检索每个客户的最短访问日期。

SELECT
    sub.CustomerID,
    Min(sub.VisitDate) AS next_visit
FROM
    (
        SELECT
            c.CustomerID,
            h.VisitDate
        FROM
            CustomerVisits AS c
            INNER JOIN History AS h
            ON c.CustomerID = h.CustomerID
        WHERE h.VisitDate > c.LastVisit
    ) AS sub
GROUP BY sub.CustomerID;