【发布时间】:2018-06-18 21:04:42
【问题描述】:
(SQL Server 2016)给定一个键和日期范围,如下所述:
关键日期 2018 年 1 月 1 日 b 2018 年 1 月 1 日 2018 年 1 月 2 日 b 2018 年 1 月 2 日 2018 年 1 月 3 日 b 2018 年 1 月 3 日 2018 年 1 月 4 日 b 2018 年 1 月 4 日 2018 年 1 月 5 日 b 2018 年 1 月 5 日 2018 年 1 月 13 日 b 2018 年 1 月 13 日 2018 年 1 月 14 日 b 2018 年 1 月 14 日 2018 年 1 月 15 日 b 2018 年 1 月 15 日 2018 年 1 月 16 日 2018 年 1 月 17 日 等等是否可以返回以下内容(每个键的组总是相隔一天):
关键开始日期结束日期 a 2018 年 1 月 1 日 2018 年 1 月 5 日(a 的第一组) a 2018 年 1 月 13 日 2018 年 1 月 17 日(a 的第二组) b 2018 年 1 月 1 日 2018 年 1 月 5 日 b 2018 年 1 月 13 日 2018 年 1 月 15 日 *新的开始* *新的结束* 等等编辑:感谢您的 cmets。针对以下问题,我尝试了 Lead()、一个游标和多个嵌入式循环。在大多数情况下,结果集不正确(放错日期或跳过键)或执行时间过长。
【问题讨论】:
-
你试过什么?你的 dbms 是什么?
-
这看起来像是一个差距和孤岛问题。 sqlshack.com/data-boundaries-finding-gaps-islands-and-more
-
您使用的是哪个DBMS? “SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加标签
postgresql、oracle、db2、sql-server、...
标签: sql sql-server-2016