【发布时间】:2019-04-23 20:17:50
【问题描述】:
我正在尝试合并几个相邻的日期以获得一个条目。
例如,我有以下一位员工缺勤:
02-Mai-17 01-Apr-18
02-Apr-18 01-Apr-19
02-Apr-19 01-Apr-20
02-Apr-20 30-Aug-20
结果应该是: 2017 年 5 月 2 日 20 年 8 月 30 日
我尝试使用 Combine consecutive date ranges 合并相邻日期,但它仅适用于我理解的另一个相邻日期。
我在https://www.file-upload.net/download-13581528/Database1.accdb.html下上传了一个示例数据库
SELECT IT2001.Id, IT2001.Kind, IT2001.Start, IT2001.End, 'Typ1'
FROM IT2001 LEFT JOIN IT2001 AS IT2001_1 ON (IT2001.Id = IT2001_1.Id) AND (IT2001.Kind = IT2001_1.Kind) AND (IT2001.Start-1=IT2001_1.End)
WHERE IT2001_1.Id IS NULL
UNION ALL
SELECT IT2001.Id, IT2001.Kind, IT2001.Start, IT2001_1.End, 'Typ2'
FROM IT2001 INNER JOIN IT2001 AS IT2001_1 ON (IT2001.Id = IT2001_1.Id) AND (IT2001.Kind = IT2001_1.Kind) AND (IT2001_1.Start-1=IT2001.End)
然后:
SELECT Query1.Id, Query1.Kind, MIN(Query1.Start), Max(Query1.End)
FROM Query1
GROUP BY Query1.Id, Query1.Kind, Query1.Start
我得到 3 行而不是 1 行:
02-Mai-17 01-Apr-19
02-Apr-18 01-Apr-20
02-Apr-19 30-Aug-20
如何获得一行或如何删除不需要的条目?
【问题讨论】:
-
这在 MS Access 中真的很痛苦。你有其他数据库吗?你会碰巧有一个日历表或数字表吗?
-
不幸的是我只能使用 MS Access,但我可以添加一个新的日历表。我可以使用日历表来查询新表应该包含哪些数据?
-
尝试从您的 GROUP BY 子句中删除
Query1.Start -
是的,这行得通,但是如果日期之间出现间隔(至少 1 天)怎么办?