找到连续几周的人出现在表格中

时间:2016-11-30 20:32:01

标签: sql-server sql-server-2012 gaps-and-islands

我需要找到一个人连续几周出现在桌子上,从本周开始。

该表具有ID和插入日期。如果一个人被插入到表中,我需要计算他们是否在前一周,如果是,那么在此之前连续几周。

我尝试了一些我搜索过的差距岛技术,但无济于事。有什么想法吗?

EDIT SQL Server 2012

ID-PK (int)
PersonID (int)
CourseNumber (varchar(15))
Term (char(5))
InsertDate (datetime)

Sample Data
250029 - 507 - 541 - Q2 - 2016-11-27
250028 - 507 - 541 - Q2 - 2016-11-20
250027 - 507 - 541 - Q2 - 2016-11-13
250027 - 507 - 541 - Q2 - 2016-10-13

所以在这个数据的例子中,我想回答“3”作为答案,因为该人在2016年10月13日至2016年11月13日休息之前连续三周出现在表中。

由于

1 个答案:

答案 0 :(得分:0)

可能的方法是添加由WeekNumber和PersonName划分的RowID(https://msdn.microsoft.com/en-us/library/ms186734.aspx)。

然后将结果重新加入其自身,其中PersonName = PersonName和RID = RID + 1.然后按PersonName计算结果。

这将为连续工作但不超过2周的人提供答案。需要数据才能获得完整的脚本。