Sql server 识别岛屿的连续日可用性

Sql server 识别岛屿的连续日可用性,sql-server,gaps-and-islands,Sql Server,Gaps And Islands,我有一个问题,我需要根据连续几天的可用空间和技能来定义时间表 数据集以以下格式提供: [地点]|[班级ID]|[日期]|[房间]|[可用] 预期结果的格式类似于分层蛋糕,最底层在最长的日期范围内有最多的可用点。下一层将包含跨越连续天数最多的其余房间,以此类推 有人对你如何解决这个问题有什么想法吗 我创建了一个快速qry,以获得连续几天的分组: SELECT [LOCATION], ROOM_ID, CLASS_ID, [DATE] ,DATEADD(DAY, - ROW_NUMB

我有一个问题,我需要根据连续几天的可用空间和技能来定义时间表

数据集以以下格式提供:

[地点]|[班级ID]|[日期]|[房间]|[可用]

预期结果的格式类似于分层蛋糕,最底层在最长的日期范围内有最多的可用点。下一层将包含跨越连续天数最多的其余房间,以此类推

有人对你如何解决这个问题有什么想法吗

我创建了一个快速qry,以获得连续几天的分组:

SELECT [LOCATION], ROOM_ID, CLASS_ID, [DATE]
        ,DATEADD(DAY, - ROW_NUMBER() OVER (PARTITION BY ROOM_ID ORDER BY [DATE]), [DATE]) AS DT_GRP
        , ROW_NUMBER() OVER (PARTITION BY ROOM_ID ORDER BY [DATE]) ROWID
FROM dbo.LECTURE_SPACE 
在DT_GRP上获得分组的最小/最大日期可以识别“层”的正确开始/结束日期。
我被如何确定下一层所困扰,是否应该将可用空间添加到上面,等等

有人有什么想法吗?并提前感谢您的帮助

样本数据:

CREATE TABLE #LECTURE_SPACE
(
[LOCATION] NVARCHAR(10) NOT NULL,
CLASS_ID NVARCHAR(10) NOT NULL,
ROOM_ID NVARCHAR(10) NOT NULL,
[DATE] DATE NOT NULL,
AVAIL DECIMAL(19,0) NOT NULL
)

INSERT INTO #LECTURE_SPACE VALUES('BROOKS', '1020', 'Room 109', ('01/01/2020'),4);
INSERT INTO #LECTURE_SPACE VALUES('BROOKS', '1020', 'Room 109', ('01/02/2020'),4);
INSERT INTO #LECTURE_SPACE  VALUES('BROOKS', '1020', 'Room 109', ('01/03/2020'),1);
INSERT INTO #LECTURE_SPACE  VALUES('BROOKS', '1020', 'Room 109', ('01/04/2020'),5);
INSERT INTO #LECTURE_SPACE  VALUES('BROOKS', '1020', 'Room 109', ('01/05/2020'),6);
INSERT INTO #LECTURE_SPACE  VALUES('BROOKS', '1020', 'Room 109', ('01/07/2020'),6);
INSERT INTO #LECTURE_SPACE  VALUES('BROOKS', '1020', 'Room 109', ('01/08/2020'),1);
INSERT INTO #LECTURE_SPACE  VALUES('BROOKS', '1020', 'Room 109', ('01/10/2020'),6);
INSERT INTO #LECTURE_SPACE  VALUES('BROOKS', '1020', 'Room 109', ('01/11/2020'),7);
INSERT INTO #LECTURE_SPACE  VALUES('BROOKS', '1020', 'Room 109', ('01/12/2020'),6);

SELECT [LOCATION], ROOM_ID, CLASS_ID, [DATE]
        ,DATEADD(DAY, - ROW_NUMBER() OVER (PARTITION BY ROOM_ID ORDER BY [DATE]), [DATE]) AS DT_GRP
        , ROW_NUMBER() OVER (PARTITION BY ROOM_ID ORDER BY [DATE]) ROWID
FROM #LECTURE_SPACE  
预期结果如下:

样本数据和期望的结果会很有帮助。如果你是对的,那会很有帮助。补充问题的主体。样本数据和期望的结果会很有帮助。如果你是对的,那会很有帮助。补充问题的主体。