sql - 连续行之间的日期差异

标签 sql ms-access

我有一个具有以下结构的表

ID     Account Number     Date
1      1001               10/9/2011 (dd/mm/yyyy)
2      2001               1/9/2011 (dd/mm/yyyy)
3      2001               3/9/2011 (dd/mm/yyyy)
4      1001               12/9/2011 (dd/mm/yyyy)
5      3001               18/9/2011 (dd/mm/yyyy)
6      1001               20/9/2011 (dd/mm/yyyy)

基本上我想做的是有一个 Access 查询来计算连续记录但相同帐号的日期差异
预期的结果是!!
1001      10/9/2011 - 12/9/2011     2 days
1001      12/9/2011 - 20/9/2011     8 days
1001      20/9/2011                 NA

基本上我想做的是有一个 Access 查询来计算连续记录的日期差异,但对于相同的帐号,在上面的例子中是 1001。(日期不必显示在结果中)

我使用 Access 2003。

最佳答案

SELECT  T1.ID, 
        T1.AccountNumber, 
        T1.Date, 
        MIN(T2.Date) AS Date2, 
        DATEDIFF("D", T1.Date, MIN(T2.Date)) AS DaysDiff
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;

或者
SELECT  ID,
        AccountNumber,
        Date,
        NextDate,
        DATEDIFF("D", Date, NextDate)
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

关于sql - 连续行之间的日期差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9994862/

相关文章:

mysql - 为什么执行2次插入的查询无法执行?

php - wordpress - 按字母显示类别的书签链接

sql - 规范化为 Microsoft Access 中的第一种形式 - 是否有半自动方法?

ms-access - 如何自动更新 MS-Access 2007 应用程序

sql-server - 如何在 SQL Server 或 Microsoft Access 中按绝对值对列进行排序?

ms-access - 如何使用 VBA 创建 CurrentDb 的副本

ms-access - 在连续表单上切换标题

mysql - 如何去掉结束日期字段

SQL Server错误: Primary file group is full

mysql - 查询两个表不带 "inner join"