gpt4 book ai didi

sql - 计算一列中各行之间的 Datediff(超过 2 条记录)

转载 作者:太空狗 更新时间:2023-10-30 01:51:55 28 4
gpt4 key购买 nike

我有一个表格,其中有一列日期,我想找出它们之间的差异。我已经能够在您的网站上找到一个答案,让我知道两个日期之间的差异,但找不到任何东西可以让我知道每个客户的几条记录之间的差异。

我的数据如下所示:

Customer     Pstng_Date
Henry 05\01\2014
Henry 10\01\2014
Henry 15\01/2014
Williams 07\01/2014
Williams 15\01\2014

我一直在使用下面的代码来计算威廉姆斯的例子,但无法让它工作,所以它计算了所有的亨利。我想看到的是:

Customer     Pstng_Date     Days_Between
Henry 05\01\2014 0
Henry 10\01\2014 5
Henry 15\01/2014 5
Williams 07\01/2014 0
Williams 15\01\2014 8

我一直在使用下面的代码来计算两条记录之间的差异。

SELECT AllDays.ID, AllDays.Customer, AllDays.Pstng_Date, AllDays.NextDate, DateDiff("d",[Pstng_Date],[NextDate]) AS Days
FROM (SELECT ID, Customer, Pstng_Date,
( SELECT Min(Pstng_Date)
FROM SAPData T2
WHERE T2.Pstng_Date > T1.Pstng_Date
) AS NextDate
FROM SAPData T1
) AS AllDays;

最佳答案

更改相关子查询,使其返回 T1.Customer 的早期 Pstng_Date 值中的最大值

在 Access 2007 中使用您的示例数据进行测试时,此查询返回了您想要的内容。

SELECT
AllDays.Customer,
AllDays.Pstng_Date,
Nz(DateDiff("d",[PreviousDate],[Pstng_Date]), 0) AS Days_Between
FROM
(
SELECT
Customer,
Pstng_Date,
(
SELECT Max(Pstng_Date)
FROM SAPData AS T2
WHERE
T2.Customer = T1.Customer
AND T2.Pstng_Date < T1.Pstng_Date
) AS PreviousDate
FROM SAPData AS T1
) AS AllDays;

如果您将从 Access session 外部运行查询,则 Nz() 函数将不可用。在这种情况下,您可以改用 IIf() 表达式。

IIf([PreviousDate] Is Null, 0, DateDiff("d",[PreviousDate],[Pstng_Date]))

关于sql - 计算一列中各行之间的 Datediff(超过 2 条记录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21073666/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com