我在上次访问日期时有一张独特客户的表格。我有另一个历史表,其中包含他们所有的访问以及预订的任何未来日期。我需要能够在他们上次访问后返回下一个访问日期。
有人可以提供帮助,因为我遇到的问题是有些客户预订的未来日期不止一个。
答案 0 :(得分:1)
这些方面的某些内容可能适合:
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
答案 1 :(得分:1)
创建一个查询,该查询为您提供其访问日期比客户更新的历史表行。上次访问。
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;