SQL Server查询将顺序日期分组

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)

任何帮助深表感谢.

Ger*_*ton 0

如果我正确理解你的问题,你想在你的记录中找到连续的时间间隔。
主要问题是确定连续时间间隔的实际构成:
如果您正在查看工作中的缺勤情况,那么任何序列

date1.09:00 to date1.18:00  
date2.09:00 to date2.18:00  
Run Code Online (Sandbox Code Playgroud)

其中date2是之后的下一个工作日date1可以被认为是连续的。

在您的情况下,这相对容易,但您将无法在单个查询中完成它。至少我现在想不出办法。

PS“podiluska”建议的“岛屿和间隙”算法将帮助您在单个查询/存储过程中编写它。