确定 Microsoft Access 中帐户事务之间经过的时间
许多数据集使用连续行跟踪帐户交易。 分析这些交易之间的时间通常需要计算日期差异。使用 Microsoft Access 中的 SQL 查询可以轻松完成此操作。 让我们探索实现此目的的两种方法:
方法一:使用 MIN() 和 DATEDIFF() 自连接
此方法使用自联接将同一帐户的每一行与后续行进行比较。
<code class="language-sql">SELECT T1.ID, T1.AccountNumber, T1.Date, MIN(T2.Date) AS NextDate, DATEDIFF("D", T1.Date, MIN(T2.Date)) AS DaysDifference FROM YourTable T1 LEFT JOIN YourTable T2 ON T1.AccountNumber = T2.AccountNumber AND T2.Date > T1.Date GROUP BY T1.ID, T1.AccountNumber, T1.Date;</code>
此查询将 YourTable
(别名为 T1
和 T2
)与其自身连接起来。 LEFT JOIN
确保包含所有交易,即使它们没有后续交易。 MIN(T2.Date)
查找最早的后续交易日期,DATEDIFF("D", T1.Date, MIN(T2.Date))
计算天数差异。
方法二:下一个交易日期的嵌套子查询
此替代方案使用嵌套子查询来有效地确定每个帐户的下一个交易日期。
<code class="language-sql">SELECT ID, AccountNumber, Date, NextDate, DATEDIFF("D", Date, NextDate) AS DaysDifference FROM ( SELECT ID, AccountNumber, Date, ( SELECT MIN(Date) FROM YourTable T2 WHERE T2.AccountNumber = T1.AccountNumber AND T2.Date > T1.Date ) AS NextDate FROM YourTable T1 ) AS T</code>
内部查询查找每行的NextDate
。然后,外部查询使用 DATEDIFF()
计算日差。
两种方法都会产生帐号、交易日期、下一个交易日期以及计算出的日期差。 最佳选择取决于您的具体数据量和性能需求。 对于非常大的数据集,自连接可能效率较低,而嵌套子查询有时可能更具可读性。
以上是如何计算 Microsoft Access 中连续行之间的日期差异?的详细内容。更多信息请关注PHP中文网其他相关文章!