ms-access - SQL 两个日期时间差多个条件

标签 ms-access multiple-columns lag days

我有一个表(T1),看起来像这样:

    ID  Date    Event
1   01/01/2010  A
1   04/01/2010  B
1   06/01/2010  A
1   09/01/2010  A
1   15/01/2010  B
2   01/02/2010  A
2   04/04/2010  A
2   01/02/2010  C
2   04/04/2010  C

我想根据“ID”和“事件”列计算两个日期之间的差异。我需要一个看起来像这样的表(T2):

ID  Date    Date2   Ndays   Event
1   01/01/2010  06/01/2010  5   A
1   06/01/2010  09/01/2010  3   A
1   04/01/2010  15/01/2010  11  B
2   01/02/2010  04/04/2010  62  A
2   01/02/2010  04/04/2010  62  C

最佳答案

一个简单的分组依据查询即可:

SELECT 
    Events.ID, 
    Min(Events.Date) AS Date1, 
    Max(Events.Date) AS Date2, 
    DateDiff('d',[Date1],[date2]) AS NDays, 
    Events.Event
FROM 
    Events
GROUP BY 
    Events.ID, 
    Events.Event;

输出:

enter image description here

编辑:

要获取更多记录,请使用子查询:

SELECT 
    Events.ID, 
    Events.Date AS Date1, 
    (Select Min(T.Date) 
    From Events As T 
    Where T.ID = Events.ID And T.Event = Events.Event And T.Date > Events.Date) AS Date2, DateDiff('d',[Date1],[date2]) AS NDays, 
    Events.Event
FROM 
    Events
GROUP BY 
    Events.ID, 
    Events.Date, 
    Events.Event
HAVING 
    (Select Min(T.Date) 
    From Events As T 
    Where T.ID = Events.ID And T.Event = Events.Event And T.Date > Events.Date) Is Not Null
ORDER BY 
    Events.ID, 
    Events.Event, 
    Events.Date;

输出:

enter image description here

关于ms-access - SQL 两个日期时间差多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59575432/

相关文章:

gnuplot - 如何在gnuplot中绘制同一数据文件中两个不同列的当前记录和先前记录之间的差异

sql - 滞后获得自前一个空值以来的第一个非空值

mysql - 如何将 MS Access 记录从主表和两个链接表导入 Excel?

mysql - 在数据库中实现相互关联的元组的最佳方法,例如零件交换汽车

python - 用另一个查找表填充 NaN

excel - 计算两列连接的唯一组合

r - 滞后值与日期

linux - "find"命令无法检测到执行期间添加的文件

sql-server-2005 - 删除链接到 Microsoft Access 的慢速 SQL Server 表

sql - TOP 1 从具有多个实例的每个 ID 进行查询