use*_*461 7 sql t-sql sql-server-2008-r2
我有一个名为Absence Details的表,我想对连续日期进行分组.这是数据
EID AbsenceType AbsenceStartDate AbsenceEndDate
769 Holiday 2012-06-25 00:00:00.000 2012-06-25 23:59:59.000
769 Holiday 2012-06-26 00:00:00.000 2012-06-26 23:59:59.000
769 Holiday 2012-09-03 00:00:00.000 2012-09-03 23:59:59.000
769 Holiday 2012-09-04 00:00:00.000 2012-09-04 23:59:59.000
769 Holiday 2012-09-05 00:00:00.000 2012-09-05 23:59:59.000
769 Holiday 2012-09-06 00:00:00.000 2012-09-06 23:59:59.000
769 Holiday 2012-09-07 00:00:00.000 2012-09-07 23:59:59.000
Run Code Online (Sandbox Code Playgroud)
我想要的结果是
EID AbsenceType AbsenceStartDate AbsenceEndDate
769 Holiday 2012-06-25 00:00:00.000 2012-06-26 23:59:59.000
769 Holiday 2012-09-03 00:00:00.000 2012-09-07 23:59:59.000
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢.
如果我正确理解你的问题,你想在你的记录中找到连续的时间间隔。
主要问题是确定连续时间间隔的实际构成:
如果您正在查看工作中的缺勤情况,那么任何序列
date1.09:00 to date1.18:00
date2.09:00 to date2.18:00
Run Code Online (Sandbox Code Playgroud)
其中date2是之后的下一个工作日date1可以被认为是连续的。
在您的情况下,这相对容易,但您将无法在单个查询中完成它。至少我现在想不出办法。
PS“podiluska”建议的“岛屿和间隙”算法将帮助您在单个查询/存储过程中编写它。