我有一个名为 CustomerLog
带字段
ID CustomerID BuyingDate
1 1001 12/02/2020(dd/mm/yyyy)
2 2023 10/02/2020
3 2024 14/02/2020
4 1001 11/03/2020
5 2023 12/03/2020
6 2024 20/03/2020
7 1001 23/04/2020
8 2023 23/04/2020
9 2024 25/04/2020
现在我需要一个如下的查询
ID CustomerID BuyingDate Difference
1 1001 12/02/2020 0
4 1001 11/03/2020 28
7 1001 23/04/2020 43
这将是非常有帮助的,如果任何人可以提供一个例子文件的原因,我读了一些帖子关于这种类型,但不能理解。
你可以做的是使用一个子查询来获取客户的前一个日期。你还需要使用 Nz
(Null to Zero)函数,将每个客户的前一个日期设置为与购买日期相同,然后用 DateDiff
来获取天数的差异。你的SQL应该是这样的。
SELECT
C.ID,
C.CustomerID,
C.BuyingDate,
Nz((SELECT TOP 1 C1.BuyingDate FROM CustomerLog AS C1 WHERE C1.CustomerID=C.CustomerID AND C1.BuyingDate<C.BuyingDate ORDER BY C1.BuyingDate DESC),C.[BuyingDate]) AS PreviousDate,
DateDiff("d",PreviousDate,C.BuyingDate) AS Difference
FROM CustomerLog AS C;
谢谢