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;
我有一个 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;